簡(jiǎn)單的來(lái)說(shuō)就是利用各種方法將APK放在system/app目錄下付鹿。
參考鏈接
Android Studio自動(dòng)生成帶系統(tǒng)簽名的apk
Embedding precompiled .APK into Android ROM | Mobile Development
使用ADB命令
使用adb push的方式進(jìn)行手動(dòng)的放置知市,這個(gè)方法用于調(diào)試比較合適,真正定制時(shí)不適用
使用PRODUCT_COPY_FILES
一、可以利用PRODUCT_COPY_FILES拷貝到目錄下(注意仰坦,通常來(lái)說(shuō)拷貝APK到目錄下是不允許,需要使用pre_build進(jìn)行拷貝,這個(gè)方法以后再說(shuō))盼铁,簡(jiǎn)單的做法就是,去build/core/Makefile文件下尝偎,將調(diào)用check-product-copy-file宏的地方注釋掉即可饶火,但是這樣之后鹏控,system.img會(huì)臃腫,所以不推薦這種方式肤寝。
二当辐、在任意存在的.MK文件中添加product_copy_files += ...即可將apk拷貝到指定的目錄(路徑以編譯源碼路徑以及系統(tǒng)上的路徑為準(zhǔn))
三、為應(yīng)用進(jìn)行系統(tǒng)簽名可以使用命令行的方式或者將jks引入系統(tǒng)簽名使用Android Studio進(jìn)行調(diào)試發(fā)布鲤看,具體的方式可以參考鏈接
使用PRE_BUILD
一缘揪、在packages/apps文件夾下創(chuàng)建文件夾,名字為app的名字义桂。
二找筝、將你的app放置到新創(chuàng)建的文件夾下
三、創(chuàng)建Android.mk文件慷吊,并添加如下預(yù)編譯代碼
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := <your-app-name>
#PRESIGNED表示你的APK已經(jīng)經(jīng)過(guò)簽名無(wú)需進(jìn)行簽名袖裕,platform表示你的apk需要進(jìn)行系統(tǒng)簽名
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
#下面這個(gè)參數(shù)時(shí)可選的,如果LOCAL_MODULE_CLASS已經(jīng)表示時(shí)APPS溉瓶,那么會(huì)自動(dòng)將其識(shí)別拷貝到system/app目錄下
#LOCAL_MODULE_PATH := $(TARGET_OUT_APPS)
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)
四急鳄、需要將打包的文件添加到變量PRODUCT_PACKAGES中,例如build/target/product/full_base.mk文件中
PRODUCT_PACKAGE += <your-app-name>
五堰酿、這樣就可以將apk預(yù)制到系統(tǒng)中