Ссылки на ресурсы `systemui` для создания тем RRO/ оверлеев в Oreo

Я пытаюсь создать тему RRO/overlay для моего устройства под управлением Oreo, чтобы изменить значки / индикаторы строки состояния.

Я вытащил значки строки состояния AOSP и включил их в пакет с одной модификацией: изменение ссылок на внутренние systemui пакет из ?attr/XXX в ?*com.android.systemui:attr/XXX, Каждый раз, когда я строю, появляются следующие ошибки:

\thm\res\drawable\stat_sys_wifi_signal_0.xml:24: error: Error: No resource found that matches the given name (at 'fillColor' with value '?*com.android.systemui:attr/fillColor').

\thm\res\drawable\stat_sys_wifi_signal_0.xml:27: error: Error: No resource found that matches the given name (at 'fillColor' with value '?*com.android.systemui:attr/backgroundColor').

Я использую командную строку для создания моего APK, и это моя настройка файла:

./AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="test.theme.aospstatusbar">

    <overlay
        android:priority="1"
        android:targetPackage="com.android.systemui"
</manifest>

Следующий файл представляет собой образец доступных для рисования элементов, которые я включил в пакет, и в которых примеры ошибок, приведенные выше, относятся к:

./res/drawable/stat_sys_wifi_signal_0.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="18.41dp"
        android:height="18.41dp"
        android:viewportWidth="21.2"
        android:viewportHeight="21.2">
      <group
          android:translateX="0.5"
          android:translateY="2.0">
        <path
            android:pathData="M18.79,9.79c-0.32,-0.32 -0.83,-0.32 -1.15,0L16.43,11l-1.21,-1.21c-0.32,-0.32 -0.83,-0.32 -1.15,0L14.06,9.8l0,0c-0.32,0.32 -0.32,0.83 0,1.15l1.21,1.21l-1.21,1.21l0,0c-0.32,0.32 -0.32,0.83 0,1.15l0.01,0.01c0.32,0.32 0.83,0.32 1.15,0l1.21,-1.21l1.21,1.21c0.32,0.32 0.83,0.32 1.15,0c0.32,-0.32 0.32,-0.83 0,-1.15l-1.21,-1.21l1.21,-1.21C19.1,10.64 19.1,10.13 18.79,9.79z"
            android:fillColor="?*com.android.systemui:attr/fillColor"/>
        <path
            android:pathData="M11.69,7.44h6.27L19.95,5c0.4,-0.49 0.3,-1.22 -0.23,-1.56c-1.6,-1.05 -5.04,-2.9 -9.62,-2.9c-4.59,0 -8.03,1.85 -9.62,2.9C-0.05,3.78 -0.16,4.51 0.24,5l9.02,11.08c0.42,0.52 1.22,0.52 1.64,0l0.78,-0.96V7.44z"
            android:fillColor="?*com.android.systemui:attr/backgroundColor"/>
      </group>
</vector>

Я строю с помощью следующей команды (aapt находясь в build-tools\26.0.3):

aapt package -M \thm\AndroidManifest.xml -S \thm\res -I %sdk%\platforms\android-26\android.jar -F \thm\build\overlay.apk -f

Я считаю, что проблема в том, чтобы ссылаться на systemui пакет? Я делаю что-то неправильно?

2 ответа

Я не знаю, актуален ли ответ, но я пытался сделать то же самое, и я нашел решение. Просто положи -I systemui.apk в команду AAPT, и он должен скомпилировать. Предполагая, что у вас есть вытащенный пакет systemui в той же папке. Это должно работать для любого пакета.

Вы не можете этого сделать. Вы сказали, что извлекли ресурс AOSP для System UI, вы можете напрямую использовать их в своей сборке.

Подробное объяснение:

Ресурс, к которому вы пытаетесь получить доступ, является частью пакета com.android.systemui, которого нет в файле android.jar, который вы передали команде aapt. Единственные ресурсы, доступные в android.jar, доступные третьим лицам, перечислены в файле public.xml платформы android:

http://androidxref.com/8.0.0_r4/xref/frameworks/base/core/res/res/values/public.xml

При попытке обработать debugResources программа ищет ресурс в android.jar и \thm\res . Поскольку он не может найти ресурс в обоих случаях, он выдает ошибку "нет ресурса".

Решение:

Создайте похожий ресурс, представленный здесь, и используйте его в своей теме. Вы должны разрешить каждую зависимость, так что ваш APK может работать независимо на любом устройстве Android.

http://androidxref.com/8.0.0_r4/xref/frameworks/base/packages/SystemUI/res/

Другие вопросы по тегам