一、什么是内置APK?
生成ROM包的时候,需要把我们公司一些APK作为内置APK,集成到系统中。这种预先集成到系统中的APK,就是内置APK。
内置APK有什么好处?
1)可以集成系统用户签名的APK,提供APK的权限级别;
这个有有很多好处,例如集成system用户的APK, 清单文件声明需要的敏感权限,可以使用敏感权限的操作。例如读写SD卡公有目录。
2)内置应用在system/app下有备份,因为集成到系统中,系统内置应用用户不能卸载。
二、内置应用的集成方式
内置应用集成方式有两种:
- 集成APK
- 集成源码
第一种方式,已经编译好的APK, 集成到系统中,这种方式方便集成第三方的APK,在不知道源码的场景下方便使用。当然也可以先编译生成APK,在集成到ROM.
第二种方式:方便源码的修改,修改后同步项目源码修改,然后添加编译的Makefile, 编译生成APK+集成一体化处理。
可以根据实际情形选择。
三、集成步骤
本文讲解APK集成。
aosp版本:Android11
编译目标:lahaina
3.1 拷贝APK
需要内置的app最好放置在同一个文件夹下。
例如将内置APP放置在packages/app/myapps目录下,方便管理。这个可以根据自己的需要定制。
packages/app/myapps
3.2 增加APP的Makefile
在packages/app/myapps增加编译脚本Makefile文件 Android.mk,内容如下:
bash
# 内置APK
#
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := TerminalClient
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_SRC_FILES := TerminalClient.apk
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := TerminalDevice
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_SRC_FILES := TerminalDevice.apk
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := TerminalLauncher
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_SRC_FILES := TerminalLauncher.apk
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := TerminalAlgor
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_SRC_FILES := TerminalAlgor.apk
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := openvpn
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_SRC_FILES := openvpn.apk
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)
3.3 集成到ROM中
在ota编译的时候,需要将内置的APK集成到系统中。
build/make/target/product/handheld_product.mk
找到# /product packages
bash
QuickSearchBox \
SettingsIntelligence \
frameworks-base-overlays \
TerminalAlgor \
TerminalClient \
TerminalDevice \
TerminalLauncher \
openvpn \
SystemUpdaterSample
追加需要集成的APK目标:
TerminalAlgor等。
这样内置APK就集成完成了。