Android系统资源预置
Android系统资源预置
开篇
Android系统预置APK
Android系统预置生成的APK(不带源码)
以预置支付宝apk为例
1.在packages目录下,或者packages/apps目录下新建文件夹,如 waterworld;
2.在 waterworld 目录下新建预置apk的文件夹,如 tcw_alipay_tyw6;
3.将apk 及 apk所使用的ao库文件,提取出来,放在 tcw_alipay_tyw6目录下,并编写 Android.mk文件。
结构如下:
Android.mk文件内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=tcw_alipay_tyw6
LOCAL_MODULE_PATH := $(TARGET_OUT)/app
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_SUFFIX:=$(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT);
4.预置apk有以下几种情况:
1> 如果App使用System Level的permission,需要預置到/system/priv-app底下 (原在/system/app)。
修改Android.mk,增加LOCAL_PRIVILEGED_MODULE := true,以声明app需要放在/system/priv-app下。
2> 签名
LOCAL_CERTIFICATE:= PRESIGNED指用软件自带的签名。对应的LOCAL_CERTIFICATE:= platforms 是指用android源码中的platform对其进行签名
LOCAL_CERTIFICATE指签名方式,如果是platforms,代表签名成系统软件, 如果还是PRESIGND,表示用的是apk原本的签名
3> 可否卸载
1)默认预置apk到system/app/目录,LOCAL_MODULE_PATH:= $(TARGET_OUT_APPS) (或者LOCAL_MODULE_PATH := $(TARGET_OUT)/app) 普通系统apk,不可卸载
2)LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS) 放在该目录下的apk可以卸载,卸载后,恢复出厂设置时,应用不会恢复。
3)LOCAL_MODULE_PATH := $(TARGET_OUT)/priv-app/ 放在该目录下的apk可以获得系统权限,系统核心apk,不可卸载(或者加入一句: LOCAL_CERTIFICATE:= PRESIGNED)。
4)LOCAL_MODULE_PATH := $(TARGET_OUT)/preloadapp, 预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复
网上也有资料说 LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app, 预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复。没测试过,但是有人很多人说不行。
5.在device目录下配置apk编译等
APK添加编译:
PRODUCT_PACKAGES +=
tcw_alipay_tyw6 \ (注意如为最后一个apk,不需要 " " )
So库添加编译:
如: PRODUCT_COPY_FILES +=packages/apps/Waterworld/libalipaywear.so:system/lib/libalipaywear.so
参照这个自己修改自己的路径
6.重新编译就可以了
Android系统预置生成APK源码(带源码)
暂未处理过预置源码的,有待后续更新