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應用。