[Jar] [Android P] Как собрать библиотеку JAR в / vendor / framework - PullRequest
0 голосов
/ 28 декабря 2018

В Android souce code (AOSP) я пытаюсь скомпилировать библиотеку jar в / vendor / framework / , но не / system / framework .

Поэтому я изменил файл Android.bp для этой библиотеки:

java_library {
    name: "com.test.provider",
    srcs: ["./java/**/*.java"],
    vendor: true,
    dex_preopt: {
        app_image: true,
    },
}

Файл com.test.provider.jar теперь был создан для / vendor / framework / .

Затем я использую эту библиотеку в SystemUI, внес изменения в frame / base / packages / SystemUI / Android.mk:

LOCAL_JAVA_LIBRARIES += com.test.provider

А также ссылаюсь на класс, определенный в com.test.provider.jar, SystemUI был успешно построен.

Но когда это приложение работало, появилось следующее сообщение об ошибке:

12-27 11:35:41.807  5449  5449 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
12-27 11:35:41.807  5449  5449 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.test.testprovidermanager.TestProviderManager" on path: DexPathList[[zip file "/system/priv-app/SystemUI/SystemUI.apk"],nativeLibraryDirectories=[/system/priv-app/SystemUI/lib/arm64, /system/lib64, /vendor/lib64, /system/lib64, /vendor/lib64]]

Похоже, ОС не ищет в этой библиотеке ни / system / framework, ни / vendor / framework,Но когда я собрал эту библиотеку в / system / framework / (удалите «vendor: true» из Android.bp), SystemUI работает нормально, это так странно!

Так что мой вопрос: Как собрать jar-библиотеку в / vendor / framwork / в Android P?

Спасибо за помощь!

1 Ответ

0 голосов
/ 29 декабря 2018

Решил эту проблему.Я забыл изменить разрешение в /system/etc/permission/testprovider_permission.xml:

<?xml version="1.0" encoding="utf-8"?>
<permissions>
 <library name="com.test.provider"
      file="/system/framework/com.test.provider.jar"/>
</permissions>

Изменить / system / framework / com.test.provider.jar на / vendor/framework/com.test.provider.jar

...