Sal*_*leh 6 android-source android-7.1-nougat
我(作为 AOSP 构建者)可以预安装一些应用程序,以便在设备上刻录后可以轻松卸载它们(就像常规下载的应用程序一样)吗?
我已经熟悉系统应用程序和隐私应用程序,但由于它们位于系统分区中,因此无法删除!(仅在设置菜单中禁用)
PS 我知道华为例如使用 /system/delapp 来安装此类应用程序。但我正在寻求一种通用方法或专门针对我正在研究的 AMLogic 平台!
您可以通过配置构建来生成userdata.img包含您的应用程序的文件来做到这一点,然后您可以使用fastboot flash userdata.
Android.mk这些应用程序的文件大致如下userdata.img所示:
include $(CLEAR_VARS)
LOCAL_MODULE := myapp1
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/app
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
Run Code Online (Sandbox Code Playgroud)
并将应用程序添加到产品包中device.mk:
PRODUCT_PACKAGES += myapp1 myapp2 ...
Run Code Online (Sandbox Code Playgroud)
您应该能够在 GitHub 上找到大量示例,例如https://github.com/search?l=Makefile&q=TARGET_OUT_DATA+BUILD_PREBUILT&type=Code
由于您是从头开始构建映像,因此您可以将应用程序放在下面的自定义目录中,并打包一个脚本,以便在启动时安装它们(如果尚未安装)。您可以通过编辑文件来调用该脚本,init.rc如下所示:
on property:dev.bootcomplete=1
exec - system system -- /system/bin/sh /path/to/installer/script.sh
Run Code Online (Sandbox Code Playgroud)
安装程序脚本可以简单如下:
for apkfile in /path/to/custom/apps/*.apk; do
/system/bin/pm install "$apkfile"
done
Run Code Online (Sandbox Code Playgroud)