RK3288 android 6.0 内置系统应用

安卓系统的内置应用可分为以下两大类:

  1. 可卸载的普通应用
  2. 不可卸载的系统应用,可以在首次烧录后自启动

可卸载应用

对于可卸载应用,其内置很简单,只需要将apk文件放置在指定目录即可。

cp My_application.apk device/rockchip/rk3288/preinstall_del/

不可卸载应用

针对不可卸载的系统应用,复杂一些,需要放置在 packages/apps 目录,具体操作如下:

apk_file=My_application.apk
install_dir=packages/apps/${apk_file}
mkdir ${install_dir}
cp ${apk_file} ${install_dir}

# 解压出lib文件
cd ${install_dir}
unzip ${apk_file} -d tmp
mv tmp/lib .
rm -rf tmp
cd -

# vi Android.mk

新建 Android.mk

注意修改以下 Android.mk 文件中的 LOCAL_MODULE 文件 apk 文件名前缀。

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := My_application
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk

$(shell mkdir -p $(PRODUCT_OUT)/system/lib)
$(shell cp -rf $(LOCAL_PATH)/lib/armeabi/*  $(PRODUCT_OUT)/system/lib)

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PRIVILEGED_MODULE := false
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)

更新 device.mk

在文件 device/rockchip/common/device.mk 中添加以下内容,这样才能将应用编译至系统固件。

PRODUCT_PACKAGES += My_application

最后重新编译系统固件即可。

说明

  1. 普通应用将安装在 /data/ 目录
  2. 系统应用分以下两种情况
    1. Android.mkLOCAL_PRIVILEGED_MODULE 为false,则安装在 /system/app 目录
    2. Android.mkLOCAL_PRIVILEGED_MODULE 为true,则安装在 /system/priv-app 目录