У меня есть APK-файл со встроенными собственными библиотеками. Когда я устанавливаю их с помощью adb, библиотеки правильно создаются в ‹path-to_package› / lib /, но я должен интегрировать свой apk в систему сборки вместе с файлом Android.mk. Что мне нужно добавить в make, чтобы извлечь библиотеки в целевую
Извлеките собственные библиотеки из предварительно созданного файла apk с помощью Android.mk
comment
Непонятно, что вы имеете в виду под интегрировать мой apk в систему сборки вместе с файлом Android.mk. Как вы вообще создавали библиотеки?
- person Michael   schedule 09.11.2020
comment
Я получил библиотеки от сторонних производителей. И теперь у меня есть apk, мне просто нужно написать make-файл, который копирует apk и собственные библиотеки на цель.
- person Vimalakshi Adiga   schedule 09.11.2020
comment
См. developer.android.com/ndk/guides/prebuilts.
- person Michael   schedule 09.11.2020
Ответы (2)
Вы можете найти пример в AOSP, например в external/chromium-webview
проекте:
- с использованием
Android.mk
(устарело): https://android.googlesource.com/platform/external/chromium-webview/+/refs/heads/android10-d4-release/Android.mk - с использованием
Android.bp
: https://android.googlesource.com/platform/external/chromium-webview/+/refs/heads/master/Android.bp.
Также на SO уже обсуждались некоторые связанные темы:
person
Mykola Khyliuk
schedule
09.11.2020
Это не приведет к извлечению библиотек в папку lib / abi .. Даже я проверил chromium-webview на целевой машине. Он просто содержит apk, а не lib / abi
- person Vimalakshi Adiga; 12.11.2020
Да, потому что они упакованы в архив APK, если вы хотите увидеть их физически, например через
adb shell
вам нужно установить android:extractNativeLibs="true"
в AndroidManifest.xml/application
, это уже обсуждается здесь: stackoverflow.com/questions/63219377/
- person Mykola Khyliuk; 12.11.2020
Да, я добавил «extractNativeLibs = true», но не помогает. Но когда я устанавливаю приложение вручную через adb, оно создает библиотеки в lib / abi.
- person Vimalakshi Adiga; 12.11.2020
Также мне нужен путь к этим библиотекам в моем приложении, есть ли способ получить путь к этим библиотекам, встроенным в сам apk?
- person Vimalakshi Adiga; 12.11.2020
convertABItoLibDir
совпадает между именем ABI и именем каталога библиотеки, потому что они не всегда полностью совпадают, например ABI arm64-v8a соответствует папке lib arm64.
- person Mykola Khyliuk; 12.11.2020
Спасибо за поддержку. Я извлек библиотеки вручную и использую их в соответствии с stackoverflow.com/questions/64735430/ Но я пытаюсь рассмотреть ваше предложение об использовании встроенных библиотек
- person Vimalakshi Adiga; 12.11.2020
Если у вас есть библиотеки, скопируйте библиотеки и создайте папку в aosp_source / external / yourlibfolder и вставьте туда свои библиотеки.
Перейдите в build / target / product и напишите этот код в соответствующем файле make (например, handhel_system.mk) для каждой библиотеки. Замените yourlibname каждым именем библиотеки
external/yourlibfolder/yourlibname.so:system/lib/yourlibname.so \
external/yourlibfolder/yourlibname.so:system/lib64/yourlibname.so \
- Он добавит библиотеки, зависящие от приложения, в AOSP. Теперь, когда вы добавляете предварительно созданный apk в AOSP, он будет работать
Создайте папку в packages / app / yourappfolder и вставьте APK и создайте там файл
Это должен быть ваш файл сборки
# Adding Apk as system app in AOSP
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Appname # It should be your apk name, and folder name should also be same
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .apk
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := platform
include $(BUILD_PREBUILT)
person
semw
schedule
10.11.2020
Не могу я добавить общие библиотеки в файл сборки APK?
- person Vimalakshi Adiga; 11.11.2020
Вы можете упомянуть их в файле apk make, например,
LOCAL_PREBUILT_JNI_LIBS := \ @lib/arm/yourlib1.so \ @lib/arm/yourlib2.so \
- person semw; 12.11.2020