android-source - 预安装一些应用程序,以便用户无需 root 即可卸载它们

标签 android-source android-7.1-nougat

我可以(作为 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/

相关文章:

android - 为什么只在 Nougat 的 Activity 转换中删除添加到 WindowManager 的 View ?

android - 如何在Android 7.1上设置最大声音

android - 如何编译并启动Android内核

android - AOSP 在自定义设备上构建

android - 应用程序未安装某些设备 Android os N android

android - 仅在牛轧糖上出现 TransactionTooLargeException

java - 检查 Activity 是否可见(onResume Pause 不适合,因为多窗口模式)

android - 如何在 AOSP 启动器之前添加我的应用程序

android - CM Source下载时间比较长,请问有什么办法可以减少吗?

build - 制作和制作otapackage