Я создал новый модуль в frameworks/base/mylib, который просто библиотека Java. Он отлично собирается и добавляется в /system/framework/mylib.jar. В jar содержится файл groups.dex, который содержит мои классы.
Теперь я хочу добавить этот jar в путь к загрузочному классу, чтобы любое приложение может получить доступ к классам внутри него.
Я пробовал добавить PRODUCT_BOOT_JARS += com.example.mylib в свой целевой продукт, build/target/product/sdk_phone_arm64.mk .
Это приведет к тому, что сборка создаст следующие файлы в папке фреймворка:
Код: Выделить всё
arm64/boot-com.example.mylib.art
arm64/boot-com.example.mylib.oat
arm64/boot-com.example.mylib.vdex
boot-com.example.mylib.vdex
Код: Выделить всё
Accessing hidden field Lcom/example/mylib/MyClass;->
MY_STRING:Ljava/lang/String; (blocked, linking, denied)
java.lang.NoSuchFieldError: No static field MY_STRING of type Ljava/lang/String;
in class Lcom/example/mylib/MyClass; or its superclasses
(declaration of 'com.example.mylib.MyClass' appears in
/system/framework/com.example.mylib.jar)
Как мне это обойти, если мне нужно добавить его в SDK, где я могу это сделать?
Я знаю, что использование добавит библиотеку в путь к классам приложения, но я хотел бы избегайте необходимости добавления приложениями этого в свои файлы манифеста и просто сделайте его доступным по всему миру.
Подробнее здесь: https://stackoverflow.com/questions/768 ... class-path
Мобильная версия