1. 程式人生 > >RK3288 android 7.1 預裝可解除安裝APK

RK3288 android 7.1 預裝可解除安裝APK

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: 0x60000800
 MACHINE: 3288
 CHECK_MASK: 0x80
 PWR_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:
[email protected]
(uboot),[email protected](trust),[email protected](misc),[email protected](resource),[email protected](kernel),[email protected](boot),[email protected](recovery),[email protected](backup),[email protected](cache),[email protected](system),[email protected](metadata),[email protected](vendor0),[email protected](vendor1),[email protected](userdata) +CMDLINE: console=ttyFIQ0 androidboot.baseband=N/A androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init initrd=0x62000000,0x00800000 mtdparts=rk29xxnand:[email protected](uboot),[email protected](trust),[email protected](misc),[email protected](resource),[email protected](kernel),[email protected](boot),[email protected](recovery),[email protected](backup),[email protected](cache),[email protected](system),[email protected](metadata),[email protected](vendor0),[email protected](vendor1),[email protected](userdata)