安卓系统的内置应用可分为以下两大类:
- 可卸载的普通应用
- 不可卸载的系统应用,可以在首次烧录后自启动
可卸载应用
对于可卸载应用,其内置很简单,只需要将apk文件放置在指定目录即可。
1
| cp My_application.apk device/rockchip/rk3288/preinstall_del/
|
不可卸载应用
针对不可卸载的系统应用,复杂一些,需要放置在 packages/apps 目录,具体操作如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
| apk_file=My_application.apk install_dir=packages/apps/${apk_file} mkdir ${install_dir} cp ${apk_file} ${install_dir}
cd ${install_dir} unzip ${apk_file} -d tmp mv tmp/lib . rm -rf tmp cd -
|
新建 Android.mk
注意修改以下 Android.mk 文件中的 LOCAL_MODULE 文件 apk 文件名前缀。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 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 中添加以下内容,这样才能将应用编译至系统固件。
1
| PRODUCT_PACKAGES += My_application
|
最后重新编译系统固件即可。
说明
- 普通应用将安装在
/data/ 目录
- 系统应用分以下两种情况
Android.mk 中 LOCAL_PRIVILEGED_MODULE 为false,则安装在 /system/app 目录
Android.mk 中 LOCAL_PRIVILEGED_MODULE 为true,则安装在 /system/priv-app 目录