淮安市网站建设_网站建设公司_图标设计_seo优化
2025/12/29 16:44:25 网站建设 项目流程

AOSP 打包实战:如何新增预装系统应用

在 Android 系统定制开发中,预装应用是常见需求。本文基于 Android 4.4 源码环境,详细讲解如何将第三方 APK 打包进系统固件。

一、前言

在 AOSP(Android 开源项目)开发中,我们经常需要将特定的应用预装到系统中,使其成为不可卸载的系统级应用。这种需求常见于:

  • 设备厂商预装自家应用
  • 运营商定制应用
  • 企业设备管理应用
  • 系统核心服务应用

本文将手把手教你如何完成这一过程。

二、准备工作

2.1 环境要求

  • AOSP 源码环境(本文基于 Android 4.4)
  • 已成功编译过完整固件
  • 需要预装的 APK 文件

2.2 重要概念

  • 系统应用:位于 /system/app/system/priv-app,具有系统签名
  • 预编译应用:直接使用编译好的 APK,无需源码
  • 平台签名:使用系统平台证书签名,获取系统权限

三、详细步骤

3.1 创建应用目录

首先在 AOSP 源码的 packages/apps/ 目录下创建应用目录:

cd packages/apps/
mkdir TestApp
cd TestApp

将你的 APK 文件复制到该目录,并重命名为与模块名一致:

3.2 编写 Android.mk

创建 Android.mk 文件,这是构建系统的核心配置文件:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)# 模块名称,必须与APK文件名一致(不含.apk后缀)
LOCAL_MODULE := TestApp# 模块标签,optional表示需要显式声明才会编译
LOCAL_MODULE_TAGS := optional# 源文件,即APK文件
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk# 模块类别为应用
LOCAL_MODULE_CLASS := APPS# 模块后缀
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)# 使用平台签名,这是成为系统应用的关键
LOCAL_CERTIFICATE := platform# 可选:声明为特权应用(将安装到system/priv-app)
# LOCAL_PRIVILEGED_MODULE := true# 可选:禁用dex预优化
# LOCAL_DEX_PREOPT := falseinclude $(BUILD_PREBUILT)

3.3 关键配置说明

3.3.1 LOCAL_MODULE_TAGS

  • optional:需要显式声明才会编译(最常用)
  • user:用户版本自动包含
  • eng:工程师版本自动包含
  • debug:调试版本自动包含

建议使用 optional,以便在不同产品中灵活控制。

3.3.2 LOCAL_CERTIFICATE

  • platform:平台签名,系统级权限
  • shared:共享签名
  • media:媒体签名
  • PRESIGNED:使用APK原有签名

系统应用必须使用 platform

3.3.3 特权应用配置

如果要获得更高权限,可以取消注释:

LOCAL_PRIVILEGED_MODULE := true

这样应用将安装到 /system/priv-app/ 而非 /system/app/

3.4 产品配置

在设备的产品配置文件中添加模块声明,这是很多人容易遗漏的关键步骤!

找到你的设备配置文件,通常位于:

device/<厂商>/<产品名>/device.mk
或
device/<厂商>/<产品名>/product.mk

添加一行:

PRODUCT_PACKAGES += XunMigration

3.5 处理APK签名

重要提醒:预装的APK应该:

  1. 使用测试签名
  2. 或者完全不签名

如果APK已有正式签名,需要先去除签名:

# 移除APK中的签名信息
zip -d XunMigration.apk META-INF/\*

系统会在编译时用平台证书重新签名。

3.6 编译验证

3.6.1 开始编译

# 设置环境
source build/envsetup.sh
lunch *****make -j8#### 3.6.2 验证是否打包成功编译完成后,检查输出目录:# 直接查看system目录
ls -la out/target/product/sw773/system/app/ 
看是否有放置的 app

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询