简单的来说就是利用各种方法将APK放在system/app目录下。
参考链接
Android Studio自动生成带系统签名的apk
Embedding precompiled .APK into Android ROM | Mobile Development
使用ADB命令
使用adb push的方式进行手动的放置,这个方法用于调试比较合适,真正定制时不适用
使用PRODUCT_COPY_FILES
一、可以利用PRODUCT_COPY_FILES拷贝到目录下(注意,通常来说拷贝APK到目录下是不允许,需要使用pre_build进行拷贝,这个方法以后再说),简单的做法就是,去build/core/Makefile文件下,将调用check-product-copy-file宏的地方注释掉即可,但是这样之后,system.img会臃肿,所以不推荐这种方式。
二、在任意存在的.MK文件中添加product_copy_files += ...即可将apk拷贝到指定的目录(路径以编译源码路径以及系统上的路径为准)
三、为应用进行系统签名可以使用命令行的方式或者将jks引入系统签名使用Android Studio进行调试发布,具体的方式可以参考链接
使用PRE_BUILD
一、在packages/apps文件夹下创建文件夹,名字为app的名字。
二、将你的app放置到新创建的文件夹下
三、创建Android.mk文件,并添加如下预编译代码
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := <your-app-name>
#PRESIGNED表示你的APK已经经过签名无需进行签名,platform表示你的apk需要进行系统签名
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
#下面这个参数时可选的,如果LOCAL_MODULE_CLASS已经表示时APPS,那么会自动将其识别拷贝到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预制到系统中
网友评论