前提
apk已有签名;安卓源码
操作步骤
1.在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预制一个名为Test的APK为例 。
2.将 Test.apk 放到 packages/apps/Test 下面。
3.在 packages/apps/Test 下面创建文件 Android.mk,文件内容如下 :
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := Test
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
4.在系统预置app的配置文件中添加我们目录:
在我的源码中,源码的配置文件在bulid/target/product/generic_no_telephony.mk中, 这个文件中又包含其他的配置文件,最终就是在配置文件中的 PRODUCT_PACKAGES 标志下添加你的test目录,如下所示:
PRODUCT_PACKAGES := \
Bluetooth \
Camera2 \
Gallery2 \
Music \
MusicFX \
OneTimeInitializer \
Provision \
SystemUI \
WallpaperCropper\
Test
5.将从Test.apk解压出来的 so库拷贝到out/target/product/${Project}/system/lib/目录下,若无 so 库,则去掉此步;
6.重新编译源码,在out/target/product/${Project}/system/app中会生成Test文件夹,里面有Test.apk,就将此apk预制到系统当中。