Android11 编译第一弹:增加内置APK

一、什么是内置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就集成完成了。

相关推荐
黄林晴4 小时前
如何判断手机是否是纯血鸿蒙系统
android
火柴就是我4 小时前
flutter 之真手势冲突处理
android·flutter
法的空间4 小时前
Flutter JsonToDart 支持 JsonSchema
android·flutter·ios
循环不息优化不止4 小时前
深入解析安卓 Handle 机制
android
恋猫de小郭4 小时前
Android 将强制应用使用主题图标,你怎么看?
android·前端·flutter
jctech5 小时前
这才是2025年的插件化!ComboLite 2.0:为Compose开发者带来极致“爽”感
android·开源
用户2018792831675 小时前
为何Handler的postDelayed不适合精准定时任务?
android
叽哥5 小时前
Kotlin学习第 8 课:Kotlin 进阶特性:简化代码与提升效率
android·java·kotlin
Cui晨5 小时前
Android RecyclerView展示List<View> Adapter的数据源使用View
android
氦客5 小时前
Android Doze低电耗休眠模式 与 WorkManager
android·suspend·休眠模式·workmanager·doze·低功耗模式·state_doze