[Jar][Android P]如何将jar库构建成/vendor/framework
[Jar][Android P] How to build a jar library into /vendor/framework
在 Android 源代码 (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中定义的class,SystemUI构建成功。
但是当这个APP是运行的时候,得到了下面的错误信息:
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]]
看起来 OS 既没有 /system/framework 也没有 /vendor/framework 寻找这个图书馆。但是当我将这个库构建到 /system/framework/(从 Android.bp 中删除 "vendor: true")时,SystemUI 工作正常,太奇怪了!
所以我的问题是:
如何在 Android P 中构建一个 jar 库到 /vendor/framwork/?
感谢您的帮助!
解决了这个问题。
我忘记了 /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
在 Android 源代码 (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中定义的class,SystemUI构建成功。
但是当这个APP是运行的时候,得到了下面的错误信息:
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]]
看起来 OS 既没有 /system/framework 也没有 /vendor/framework 寻找这个图书馆。但是当我将这个库构建到 /system/framework/(从 Android.bp 中删除 "vendor: true")时,SystemUI 工作正常,太奇怪了!
所以我的问题是: 如何在 Android P 中构建一个 jar 库到 /vendor/framwork/?
感谢您的帮助!
解决了这个问题。 我忘记了 /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