预安装一些应用,以便用户无需root即可将其卸载

时间:2018-11-21 15:51:44

标签: android-source android-7.1-nougat

我(作为AOSP构建者)可以预先安装一些应用程序,以便在设备上刻录后轻松卸载(例如常规下载的应用程序)吗?

我已经熟悉系统应用程序和priv-apps,但是由于它们位于系统分区中,因此无法将其删除! (仅在设置菜单中禁用)

P.S。我知道华为例如使用/ system / delapp安装此类应用程序。但是我正在寻找一种通用的方法或我正在研究的AMLogic平台!

1 个答案:

答案 0 :(得分:1)

您可以通过将构建配置为生成一个包含您的应用程序的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)

并将应用添加到device.mk中的产品包中:

PRODUCT_PACKAGES += myapp1 myapp2 ...

您应该能够在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

安装程序脚本可以很简单:

for apkfile in /path/to/custom/apps/*.apk; do
   /system/bin/pm install "$apkfile"
done