Как изменить "vendor / etc / public.libraries.txt" при сборке чистого AOSP - PullRequest
0 голосов
/ 17 января 2019

ENV : чистый AOSP (android-9.0.0_r20) для marlin target (PIXEL XL)

Я хочу добавить свою собственную библиотеку libOwnlibrary.so в файл белого списка vendor/etc/public.libraries.txt, чтобы я мог загрузить ее из собственного system/priv-app/MyOwnApp.apk APK

В настоящее время я получаю следующую ошибку:

java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libOwnlibrary.so" needed or dlopened by "/system/lib/libnativeloader.so" is not accessible for the namespace "classloader-namespace"

Что имеет смысл из-за ограничений, введенных в Android 7.0 (API 24): https://developer.android.com/about/versions/nougat/android-7.0-changes#ndk

Начиная с Android 7.0, система предотвращает динамическое приложение связывание с библиотеками, отличными от NDK, что может привести к сбою приложения.

Моя текущая настройка:

AOSP-root-folder/
    - vendor/
        - myvendor/
            device-partial.mk (this basically instructs `make` to copy libOwnlibrary.so to vendor/lib/libOwnlibrary.so
                    ```PRODUCT_COPY_FILES := .. .so```
            proprietary/
                Android.mk (pushes presigned prebuilt MyOwnApp.apk to /system/priv-app)
                    ```... include$(BUILD_PREBUILT)```

Что я должен изменить / добавить, чтобы можно было изменить файл белого списка vendor/etc/public.libaries.txt, добавив к нему libOwnlibrary.so.

!!! Один способ, который мог бы работать , это добавить libOwnlibrary.so к

AOSP-root-folder/system/core/rootdir/etc/public.libraries.android.txt

, что на устройстве означает system/etc/public.libraries.txt,

НО это означало бы перемещение моей библиотеки в system/lib из vendor/lib и Я не думаю, что это разрешено. !!!

1 Ответ

0 голосов
/ 18 июня 2019

Добавьте шаг в device-partial.mk, чтобы добавить имя вашей библиотеки в существующий файл vendor/etc/public.libaries.txt

после этого шага

device-partial.mk (this basically instructs `make` to copy libOwnlibrary.so to vendor/lib/libOwnlibrary.so
                    ```PRODUCT_COPY_FILES := .. .so```
...