RK3288 android 7.1 预装可卸载APK

  • 平台
  • 需求
  • 实现
  • 后续

平台

RK3288 + Android 7.1

需求

ROM 中集成可卸载APK, 需满足要求:

  1. 烧录完成启动后, 应用已装上
  2. 用户可手动卸载
  3. 重启后保持应用安装/卸载状态
  4. 重置后, 应用已安装上

实现

在make 完成后, 创建out/target/product/rk3288/vendor/bundled_uninstall_back-app目录
把预装APK存放到此目录下, 结构如下:
|--out/target/product/rk3288/vendor/bundled_uninstall_back-app/|--apkFile-1.apk|--apkFile-2.apk....
其中, apkFile为APK文件名, 任意, 建议使用英文最好不带字符, 避免使用中文编码接着再重新 make
并使用 mkimage生成image文件
最后打包update.img 固件

后续

vendor 分区有大小限制, 注意APK不能超过分区大小
那么问题来了, 如何修改 分区大小?
首先, 这里走了一个弯路:

diff --git a/device/rockchip/rk3288/BoardConfig.mk b/device/rockchip/rk3288/BoardConfig.mk
index fb36305..da5ffc0 100755
--- a/device/rockchip/rk3288/BoardConfig.mk
+++ b/device/rockchip/rk3288/BoardConfig.mk
@@ -99,7 +99,7 @@ ifeq ($(strip $(USE_DEFAULT_PARAMETER)), true)BOARD_VENDORIMAGE_PARTITION_SIZE := $(shell python device/rockchip/common/get_partition_size.py $(TARGET_DEVICE_DIR)/parameter.txt vendor0)#$(info Calculated BOARD_VENDORIMAGE_PARTITION_SIZE=$(BOARD_VENDORIMAGE_PARTITION_SIZE) use $(TARGET_DEVICE_DIR)/parameter.txt)else
-  BOARD_VENDORIMAGE_PARTITION_SIZE ?= 52428800
+  BOARD_VENDORIMAGE_PARTITION_SIZE ?= 104857600

原来以为修改这个分区大小即可, 后面验证不可行.

正确方法

diff --git a/device/rockchip/rk3288/parameter.txt b/device/rockchip/rk3288/parameter.txt
index 37ab61e..f869e67 100755
--- a/device/rockchip/rk3288/parameter.txt
+++ b/device/rockchip/rk3288/parameter.txt
@@ -7,4 +7,4 @@ ATAG: 0x60000800MACHINE: 3288CHECK_MASK: 0x80PWR_HLD: 0,0,A,0,1
-CMDLINE: console=ttyFIQ0 androidboot.baseband=N/A androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init initrd=0x62000000,0x00800000 mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),0x00002000@0x00006000(misc),0x00008000@0x00008000(resource),0x0000C000@0x00010000(kernel),0x00010000@0x0001C000(boot),0x00010000@0x0002C000(recovery),0x00038000@0x0003C000(backup),0x00040000@0x00074000(cache),0x00400000@0x000B4000(system),0x00008000@0x004B4000(metadata),0x00019000@0x004BC000(vendor0),0x00019000@0x004D5000(vendor1),-@0x004EE000(userdata)
+CMDLINE: console=ttyFIQ0 androidboot.baseband=N/A androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init initrd=0x62000000,0x00800000 mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),0x00002000@0x00006000(misc),0x00008000@0x00008000(resource),0x0000C000@0x00010000(kernel),0x00010000@0x0001C000(boot),0x00010000@0x0002C000(recovery),0x00038000@0x0003C000(backup),0x00040000@0x00074000(cache),0x00400000@0x000B4000(system),0x00008000@0x004B4000(metadata),0x00100000@0x004BC000(vendor0),0x00100000@0x005BC000(vendor1),-@0x006BC000(userdata)

RK3288 android 7.1 预装可卸载APK相关推荐

  1. 如何在Android模拟器上安装和卸载APK程序包

    如何在Android模拟器上安装和卸载APK程序包 Android, 程序包, APK, 卸载, 模拟 一,安装APK          安装APK当然首先是要有模拟器,和要安装的APK包,这个不多废 ...

  2. Android预装可卸载apk方法 卸载后恢复出厂设置可恢复

       我们预置运用程序一般都是把apk放在system/app下,但是如果是在system下的话,user版本无法卸载apk:但是如果把apk放在data/app中的话,如果恢复出厂设置,这些apk在 ...

  3. android预置app可卸载实现,Android系统预制可自由卸载apk

    在我们都痛恨手机厂商预装着一堆无用的app时,是否考虑怎么实现将app预装在data区,让用户可以自由卸载,做一个有良心的厂商,下面就把来说说如何实现预装app能够让用户卸载. 系统识别的app位置 ...

  4. Android PackageManagerService分析三:卸载APK

    为什么80%的码农都做不了架构师?>>>    这一章我们介绍APK的卸载过程,从前一章分析安装APK的过程,我们应该大致了解这里的卸载的过程如下: 1.从PMS的内部结构上删除ac ...

  5. Android之用命令uninstall卸载apk和用 -i 过滤日志忽略大小写

    1.卸载apk adb uninstall package adb uninstall ***.apk 上面是正确的,记得是加包名,不是apk 2.过滤日志忽略大小写 adb logcat | gre ...

  6. android 9 预装可卸载的app,只安装一次

    之前修改代码做了可卸载的预装app,但客户要求,只安装一次,后面就不管了,卸载了也不需要再次安装. 需求的节点在于,预装后apk文件还存在,重新启动后会再次安装. 解决的思路: 系统启动后检查是否已经 ...

  7. 如何彻底卸载\删除android设备上预装app

    作为apk开发人员,经常会遇到要在已预装自家apk的设备上调试新版的apk,这时候就会遇到签名冲突或者已安装错误提示 INSTALL_FAILED_ALREADY_EXISTS. 这个时候就需要卸载掉 ...

  8. Android (内置)预装应用

    Android (内置)预装应用 参考Android 系统如何预装第三方应用以及常见问题汇集. 系统开机时会进行应用的加载(或者说安装),所以我们大体上来说就是需要把要内置的apk放到指定目录就行.最 ...

  9. Android 系统如何预装第三方应用以及常见问题汇集

    从事系统开发工作的朋友都知道,手机厂商因为各种原因会在系统中预装一些第三方应用来作为手机的卖点或者额外的收入,但是随着Android 系统日益强大和完善,对一些应用的安全性和稳定性的要求也越来越高.下 ...

最新文章

  1. spring aop原理_Spring知识点总结!已整理成142页离线文档(源码笔记+思维导图)...
  2. android layout 工具栏,没有工具栏的Android CollapsingToolbarLayout在某个点停止而不是完全关闭...
  3. java integer 不变模式_Java代码的变与不变
  4. Oracle数据库使用Analyze提升sql性能
  5. 如何ASP.NET Core Razor中处理Ajax请求
  6. java 继承示例_Java中的继承类型以及示例
  7. Windows XP和Windows 7双系统安装和启动菜单修复
  8. 定长掩码地址划分与VLSM子网划分
  9. 百度Android定位API使用指南
  10. 怎么判断软件公司是否靠谱
  11. ERP已经凉凉?低代码平台真能成为下个风口吗?
  12. WebStorm——cocos2d-html5专用IDE
  13. java 异常面试问题_Java异常面试问答
  14. Ubuntu 14.04/16.04 与 Windows 10 周年版 Ubuntu Bash 性能对比
  15. cocos2dx截整屏、截部分屏
  16. Proxifier全局代理软件,其提供了跨平台的端口转发和代理功能
  17. DLL和EXE加载包在自身内部的资源文件
  18. CDRshp文件转html,CDR转PDF设置教程-告诉你如何把cdr转换成适合印刷的pdf
  19. oracle redo wait较高,【案例】Oracle等待事件latch:row cache objects原因和解决办法
  20. Unity3D摄像机跟随人物移动脚本

热门文章

  1. 篮球数据API接口 - 【赛程赛果】API调用示例代码
  2. python3 中__dict__的用法
  3. The rollout of the Indian motorcycle brand continues apace
  4. MongoDB的安全认证
  5. 字符串练习11_潜伏者
  6. c语言中向量表示方法,求问 向量的表示方法 有哪几种
  7. 遥感干货一览D——文献、文集、论坛、会议整理
  8. 离散数学·集合论【自然数和基数】
  9. uniapp 中 Cannot read property ‘length‘ of undefined 报错处理
  10. dgl源码阅读笔记(3)——DeepWalk