AOSP Добавить Jar в путь к классу загрузкиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 AOSP Добавить Jar в путь к классу загрузки

Сообщение Anonymous »

Я настроил проект AOSP, он отлично собирается (Android 12).
Я создал новый модуль в 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
В банке теперь содержится пустой файл class.dex. Когда я пытаюсь получить доступ к классу в своем приложении, я получаю следующие ошибки:

Код: Выделить всё

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)
Похоже, это связано с ограничениями интерфейса Android, не связанными с SDK.
Как мне это обойти, если мне нужно добавить его в SDK, где я могу это сделать?
Я знаю, что использование добавит библиотеку в путь к классам приложения, но я хотел бы избегайте необходимости добавления приложениями этого в свои файлы манифеста и просто сделайте его доступным по всему миру.

Подробнее здесь: https://stackoverflow.com/questions/768 ... class-path
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»