无法启用运行时资源覆盖

问题描述 投票:0回答:2

我正在遵循一些有关如何创建自定义运行时资源覆盖 (RRO) APK 的教程,但我无法启用我的。

adb shell cmd overlay list

...

com.example.mytarget
--- com.example.myoverlay

Google说

---
表示已安装,但有错误,无法启用。

adb shell cmd overlay dump com.example.myoverlay

com.example.myoverlay:0 {
  mPackageName...........: com.example.myoverlay
  mOverlayName...........: null
  mUserId................: 0
  mTargetPackageName.....: com.example.mytarget
  mTargetOverlayableName.: null
  mBaseCodePath..........: /system/product/overlay/myoverlays.apk
  mState.................: STATE_MISSING_TARGET
  mIsEnabled.............: true
  mIsMutable.............: true
  mPriority..............: 2147483647
  mCategory..............: null
  mIsFabricated..........: false
}
IDMAP OF com.example.myoverlay
<missing idmap>

文档说

mState.................: STATE_MISSING_TARGET
表示“您的目标未安装”。这听起来有点像一个循环,我不知道我应该做什么。


代码:

树:

└── MyOverlays
    ├── AndroidManifest.xml
    └── res
        └── xml
            └── overlays.xml

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.android.systemui">
    <application android:hasCode="false" /> 
    <overlay android:targetPackage="com.android.systemui"
                android:targetName="res.values.colors.xml"
                android:resourcesMap="@xml/overlays"
                                        android:priority="1"/>
 
</manifest>

overlays.xml:

<overlay xmlns:android="http://schemas.android.com/apk/res/android" >
    <item target="color/global_actions_lite_background" value="#FFBF360C" />
    <item target="color/notification_primary_text_color" value="#55FF0000" />
</overlay>

并按照本指南进行构建:https://github.com/MartinStyk/Android-RRO

安卓:12.1
设备:索尼 Xperia 1
ROM:血统Os

android android-resources android-overlay
2个回答
1
投票

首先,您将信息转储到覆盖层

com.example.myoverlay
,这与您提供代码的覆盖层不同。您应该运行以下命令:

adb shell cmd overlay dump com.android.systemui

正如您在

AndroidManifest.xml
中指定的那样,您的 RRO 的封装是
com.android.systemui
。在命令的输出中,覆盖层
com.example.myoverlay
具有状态
STATE_MISSING_TARGET
,因为您可能没有安装任何具有包名称
com.example.mytarget
的应用程序(这是您的目标)。还可以尝试将 RRO 软件包的名称更改为其他名称,以便更容易检查它是否已安装。

希望您一切顺利,如果您还有其他问题,请告诉我


0
投票

您的目标包和当前应用程序包相同尝试将当前包更改为清单包,如下所示

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.companyname.yourUniqueAppName">

    <application android:hasCode="false" /> 
    <overlay android:targetPackage="com.android.systemui"
                android:targetName="res.values.colors.xml"
                android:resourcesMap="@xml/overlays"
                                        android:priority="1"/>
 
</manifest>
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.