我可以(作为 AOSP 构建者)预安装一些应用程序,以便在设备上刻录后,它们可以轻松卸载(就像常规下载的应用程序一样)?
我已经熟悉系统应用程序和私有(private)应用程序,但由于它们位于系统分区中,因此无法删除! (仅在设置菜单中禁用)
附言例如,我知道华为使用/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)
并将应用程序添加到
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
关于android-source - 预安装一些应用程序,以便用户无需 root 即可卸载它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53415804/