[Android6.0][RK3399] 出厂预置可卸载 APK
2017-04-19 15:49
417 查看
Platform: RK3399
OS: Android 6.0
Kernel: 4.4
Version: v2017.04
官方文档中的方法
出现问题
解决思路
重新编译即可
编译后会在 out/target/product/rk3399/system/ 下生成 preinstall 文件夹,其中包含了预置的第三方 APK。
烧录后系统将自动安装应用到 data/app 目录,所以他们是可以卸载的。
不过即使卸载后,恢复出厂设置后,这些 APP 还是会存在的。
希望卸载后,恢复出厂设置时,这些 APP 不存在的话,将上述文件夹名字改为 preinstall_del 即可。
看起来 device.mk 中有点相关
哦,原来他是会去找 TARGET_DEVICE_DIR 目录下的 preinstall 啊
所以对于我的 TARGET_DEVICE_DIR 路径应该是 device/rockchip/rk3399/rk3399_64/preinstall
重新按官方方法添加 APK 后验证成功。
另外在上面 mk 中也可以看到 在找到了 preinstall 或者 preinstall_del 后会调用 device/rockchip/common/auto_generator.py 这个脚本来生成一些 mk 文件(Android.mk 和 preinstall.mk)
实际上最终处理 preinstall 文件夹下 Apk 的逻辑是在生成的 preinstall.mk 中的
重新编译后我们可以看到
preinstall 文件夹下除了之前我们添加的 APK 文件,还多了两个 mk 文件 Android.mk 和 preinstall.mk
preinstall.mk 中有
OS: Android 6.0
Kernel: 4.4
Version: v2017.04
官方文档中的方法
出现问题
解决思路
官方文档中的方法
mkdir device/rockchip/rk3399/preinstall cp test.apk device/rockchip/rk3399/preinstall/
重新编译即可
编译后会在 out/target/product/rk3399/system/ 下生成 preinstall 文件夹,其中包含了预置的第三方 APK。
烧录后系统将自动安装应用到 data/app 目录,所以他们是可以卸载的。
不过即使卸载后,恢复出厂设置后,这些 APP 还是会存在的。
希望卸载后,恢复出厂设置时,这些 APP 不存在的话,将上述文件夹名字改为 preinstall_del 即可。
出现问题
我的 out/target/product/rk3399/system/ 并没有生成 preinstall 文件夹解决思路
应该会有某个 mk 对 preinstall 进行操作。$ grep preinstall ./device/rockchip/ -nir ./common/device.mk:21: $(shell python device/rockchip/common/auto_generator.py $(TARGET_DEVICE_DIR) preinstall) ./common/device.mk:22: $(shell python device/rockchip/common/auto_generator.py $(TARGET_DEVICE_DIR) preinstall_del) ./common/device.mk:23: -include $(TARGET_DEVICE_DIR)/preinstall/preinstall.mk ./common/device.mk:24: -include $(TARGET_DEVICE_DIR)/preinstall_del/preinstall.mk ./common/device.mk:422:# for preinstall ./common/device.mk:424: $(LOCAL_PATH)/preinstall_cleanup.sh:system/bin/preinstall_cleanup.sh ./common/preinstall_cleanup.sh:2:log -t PackageManager "Start to clean up /system/preinstall_del/" ./common/preinstall_cleanup.sh:4:rm system/preinstall_del/*.* ./common/auto_generator.py:19: preinstall_dir = os.path.dirname(argv[0]) ./common/auto_generator.py:20: preinstall_dir = os.path.join(preinstall_dir, '../../../' + argv[1] + '/' + argv[2]) ./common/auto_generator.py:21: if os.path.exists(preinstall_dir): ./common/auto_generator.py:23: makefile_path = preinstall_dir + '/Android.mk' ./common/auto_generator.py:25: include_path = preinstall_dir + '/preinstall.mk' ./common/auto_generator.py:36: for root, dirs, files in os.walk(preinstall_dir):
看起来 device.mk 中有点相关
vi common/device.mk +21
17 # Prebuild apps 18 ifneq ($(strip $(TARGET_PRODUCT)), ) 19 TARGET_DEVICE_DIR=$(shell test -d device && find device -maxdepth 4 -path '*/$(TARGET_PRODUCT)/Boa rdConfig.mk') 20 TARGET_DEVICE_DIR := $(patsubst %/,%,$(dir $(TARGET_DEVICE_DIR))) 21 $(shell python device/rockchip/common/auto_generator.py $(TARGET_DEVICE_DIR) preinstall) 22 $(shell python device/rockchip/common/auto_generator.py $(TARGET_DEVICE_DIR) preinstall_del) 23 -include $(TARGET_DEVICE_DIR)/preinstall/preinstall.mk 24 -include $(TARGET_DEVICE_DIR)/preinstall_del/preinstall.mk 25 endif
哦,原来他是会去找 TARGET_DEVICE_DIR 目录下的 preinstall 啊
所以对于我的 TARGET_DEVICE_DIR 路径应该是 device/rockchip/rk3399/rk3399_64/preinstall
重新按官方方法添加 APK 后验证成功。
另外在上面 mk 中也可以看到 在找到了 preinstall 或者 preinstall_del 后会调用 device/rockchip/common/auto_generator.py 这个脚本来生成一些 mk 文件(Android.mk 和 preinstall.mk)
实际上最终处理 preinstall 文件夹下 Apk 的逻辑是在生成的 preinstall.mk 中的
重新编译后我们可以看到
preinstall 文件夹下除了之前我们添加的 APK 文件,还多了两个 mk 文件 Android.mk 和 preinstall.mk
vi device/rockchip/rk3399/rk3399_64/preinstall/preinstall.mk
preinstall.mk 中有
PRODUCT_PACKAGES += MyAPK
相关文章推荐
- Android-如何预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复?
- [RK3399][Android6.0] 系统重启支持恢复出厂设置参数
- 如何预置APK使得用户可以卸载,恢复出厂设置时不能恢复?
- [RK3288][Android6.0] 调试笔记 --- 系统自带预置第三方APK方法
- 预置APK使用户可以卸载,并且恢复出厂设置时能够恢复
- Android高通预置apk可卸载,恢复出厂设置可恢复
- [RK3288][Android6.0] 调试笔记 --- /data/app/预置apk安装失败
- 如何预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复?
- MTK android6.0 如何预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复
- [RK3288][Android6.0] 调试笔记 --- apk安装添加黑名单
- [Android6.0][RK3399] PCIe 接口 4G模块 EC20 调试记录
- [Android6.0][RK3399] Mipi LCD 通用移植调试流程
- [RK3399][Android6.0] 系统支持的重启模式
- [RK3288][Android6.0] 调试笔记 --- Launcher中隐藏APK图标
- [Android6.0][RK3399] USB接口Touchscreen驱动流程分析
- Android6.0关于预置三方app卸载(二) 调用接口安装
- [Android6.0][RK3399] SDIO 接口 Wifi 驱动流程分析 (AP6354)
- [Android6.0][RK3399] 电池系统(二)BQ IC 添加 DC 充电功能
- Android6.0关于预置三方app卸载(一) copy到data/app下
- [RK3288][Android6.0] 调试笔记 --- 强制第三方apk横屏显示