system/app 中的 APK 何时安装?
When are the APKs in system/app being installed?
我创建了一个自定义系统映像并将一个额外的 APK 放入 system/app。这有点管用,我可以 运行 应用程序,但是没有加载本机库(loadLibrary() 失败)。当我在 APK 上调用 pm install
时,一切正常并且加载了本机库。
我的结论是 APK 没有正确安装。我会很感激我观察到的行为的任何背景。这是应该的方式还是我错过了什么?包管理器什么时候会在应用程序(或私有应用程序)中安装 APK。是否有某种设备设置 运行 在某个时候?
Pre-installed AOSP 上的应用程序安装数量不如 'copied over'。
为了也有预构建的库 'copied over' 你必须在你的 Android.mk.
中指定它们
您可以通过在 Android.mk 上指定 LOCAL_PREBUILT_JNI_LIBS
来做到这一点。
这是一个例子:
LOCAL_PATH := $(call my-dir)
my_archs := arm x86 arm64
my_src_arch := $(call get-prebuilt-src-arch, $(my_archs))
include $(CLEAR_VARS)
LOCAL_MODULE := TestApp
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := TestApp.apk
LOCAL_PREBUILT_JNI_LIBS := \
@lib/arm64-v8a/libnoise.so
LOCAL_MODULE_TARGET_ARCH := $(my_src_arch)
include $(BUILD_PREBUILT)
有一个名为 genandroidmk
的有用工具可以自动为您生成此 Android.mk:
https://github.com/northbright/genandroidmk
按照以下步骤操作
检查预构建 APK 的库。在设备中安装应用程序(pm install)
然后打开android studio(apk安装的设备附带pc),
单击“查看”->“工具”windows->“设备文件资源管理器”。它会打开
右侧的设备资源管理器,转到数据文件夹并检查
应用程序包名称中的库。
复制库并在 aosp_source/external/yourlibfolder 中创建一个文件夹,然后将您的库粘贴到那里。
转到build/target/product并将此代码写入相关的 make 文件。
external/yourlibfolder/yourlibname.so:system/lib/yourlibname.so \
external/yourlibfolder/yourlibname.so:system/lib64/yourlibname.so \
- 在AOSP中添加应用依赖库。现在,当您在 AOSP 中添加 Pre-built apk 时,它将起作用
我创建了一个自定义系统映像并将一个额外的 APK 放入 system/app。这有点管用,我可以 运行 应用程序,但是没有加载本机库(loadLibrary() 失败)。当我在 APK 上调用 pm install
时,一切正常并且加载了本机库。
我的结论是 APK 没有正确安装。我会很感激我观察到的行为的任何背景。这是应该的方式还是我错过了什么?包管理器什么时候会在应用程序(或私有应用程序)中安装 APK。是否有某种设备设置 运行 在某个时候?
Pre-installed AOSP 上的应用程序安装数量不如 'copied over'。
为了也有预构建的库 'copied over' 你必须在你的 Android.mk.
中指定它们您可以通过在 Android.mk 上指定 LOCAL_PREBUILT_JNI_LIBS
来做到这一点。
这是一个例子:
LOCAL_PATH := $(call my-dir)
my_archs := arm x86 arm64
my_src_arch := $(call get-prebuilt-src-arch, $(my_archs))
include $(CLEAR_VARS)
LOCAL_MODULE := TestApp
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := TestApp.apk
LOCAL_PREBUILT_JNI_LIBS := \
@lib/arm64-v8a/libnoise.so
LOCAL_MODULE_TARGET_ARCH := $(my_src_arch)
include $(BUILD_PREBUILT)
有一个名为 genandroidmk
的有用工具可以自动为您生成此 Android.mk:
https://github.com/northbright/genandroidmk
按照以下步骤操作
检查预构建 APK 的库。在设备中安装应用程序(pm install) 然后打开android studio(apk安装的设备附带pc), 单击“查看”->“工具”windows->“设备文件资源管理器”。它会打开 右侧的设备资源管理器,转到数据文件夹并检查 应用程序包名称中的库。
复制库并在 aosp_source/external/yourlibfolder 中创建一个文件夹,然后将您的库粘贴到那里。
转到build/target/product并将此代码写入相关的 make 文件。
external/yourlibfolder/yourlibname.so:system/lib/yourlibname.so \
external/yourlibfolder/yourlibname.so:system/lib64/yourlibname.so \
- 在AOSP中添加应用依赖库。现在,当您在 AOSP 中添加 Pre-built apk 时,它将起作用