1、前言
在Android终端设备的开发过程中,有时候我们需要为Android系统中预装APP,本文将介绍如何在Android源码中进行系统预装APP。
2、Android系统预装APP
首先,需要准备好预装的APP文件,以Bing浏览器为例,apk文件下载链接如下:
https://www.appsapk.com/bing-search/
接下来,则是修改AOSP源码,让编译出来的system.img镜像文件包含我们要预装的APP:
我当前的Android终端设备是以Qualcomm MSM8953为SoC,搭载了Android 9系统,修改源码步骤如下:
新创建工程目录,并添加编译Android.mk和APP文件:
$ cd AOSP/vendor/qcom/app/Browser $ mkdir Bing $ touch Android.mk $ cp <dir>/Bing.apk .
其中Android.mk的内容如下:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := Bing LOCAL_MODULE_TAGS := optional LOCAL_MODULE_CLASS := APPS LOCAL_CERTIFICATE := platform LOCAL_SRC_FILES := Bing.apk LOCAL_PROPRIETARY_MODULE := true
include $(BUILD_PREBUILT)
接下来,分析一下这个Android.mk的内容:
- LOCAL_MODULE:用来指定模块的名称,该模块名称需要加入到PRODUCT_PACKAGES;
- LOCAL_MODULE_TAGS:用来指定该app在编译什么样子的版本的时候会被安装到机器上;
- LOCAL_MODULE_CLASS:在采用预装这种形式的时候,该变量来指定预装的模块的类型,此处为APPS;
- LOCAL_CERTIFICATE:用于设置APK的签名模式,指定为platform表示该APK完成系统的核心功能;
- LOCAL_SRC_FILES:要预装的APK源文件;
- LOCAL_PROPRIETARY_MODULE:表示专利性产品。
接下来,修改设备编译的.mk文件,让我们要预装的APP文件打包进行系统镜像里面:
$ cd AOSP/device/qcom/msm8953_64
$ vim msm8953_64.mk
在msm8953_64.mk文件的最后添加下面代码,表示将Bing模块进行打包:
PRODUCT_PACKAGES += Bing
修改完成后,接下来重新编译system.img镜像并烧写:
$ make systemimg # adb reboot bootloader # fastboot falsh system system.img # fastboot reboot
最后,重新检查并进入到Android设备终端,检查是否已经预装APP完成:
# cd /vendor/app/Bing # ls -alh
成功预装效果如下:
3、小结
本文简单介绍了如何在Android系统源码中预装APP应用。