cm-14.1 Android系统定制(二):内置系统应用

声明

  • Android系统定制时免不了预置一些APP进系统中;
  • 预置的结果一般有三种:

      1.预置的APK用户可以卸载,恢复出厂设置后APK不恢复;

      2.预置的APP用户可以卸载,但恢复出厂设置后APK恢复;

      3.预置的APK用户不可以卸载;

1 预置APK用户可以卸载,恢复出厂设置后APK不恢复

  1. 在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以 预制一个名为Ma的APK为例
  2. 将 Ma.apk 放到 packages/apps/Ma 下面;
  3. 在  packages/apps/Ma 下面创建文件 Android.mk,文件内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# 定义模块名称,一般和APK名字相同
LOCAL_MODULE := Ma
#要在哪总版本下编译,可选择值有user eng tests optional,optional表示任意版本都编译
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
#定义编译完成之后的类型:除了APPS,还有ETC,EXECUTABLES(.bin)SHARED_LIBRARIES(.so) 等选择值
LOCAL_MODULE_CLASS := APPS
#定义编译完成之后模块的后缀
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#定义使用原app签名可用选择项platform,shared,media
LOCAL_CERTIFICATE := PRESIGNED

#定义编译之后的位置,这里指的是data/apps目录
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)

#不进行odex
LOCAL_DEX_PREOPT := false
#添加lib文件的引用,使用LOCAL_PREBUILT_JNI_LIBS列出所有so的路径,不要忘记使用@。@标识符会将apk中的so抽离出来build进apk同级目录下的lib文件夹中,可根据CPU 的(TARGET_ARCH)不同类型对SO  进行处理
LOCAL_PREBUILT_JNI_LIBS := \
                     @lib/armeabi-v7a/xx.so \
                     @lib/armeabi-v7a/yy.so
include $(BUILD_PREBUILT)
  1. 打开文件 build/target/product/core.mk,将 Ma添加到 PRODUCT_PACKAGES中。
  2. 将从Ma.apk解压出来的 so库拷贝packages/apps/Ma/lib/目录下;若无so库,则去掉此步。
  3. 在packages/apps/Ma执行mmm命令,再刷机即可。

2 预置APK用户可以卸载,恢复出厂设置后APK可恢复

  1. 在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以 预制一个名为Ma的APK为例
  2. 将 Ma.apk 放到 packages/apps/Ma 下面;
  3. 在  packages/apps/Ma 下面创建文件 Android.mk,文件内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# 定义模块名称,一般和APK名字相同
LOCAL_MODULE := Ma
#要在哪总版本下编译,可选择值有user eng tests optional,optional表示任意版本都编译
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
#定义编译完成之后的类型:除了APPS,还有ETC,EXECUTABLES(.bin)SHARED_LIBRARIES(.so) 等选择值
LOCAL_MODULE_CLASS := APPS
#定义编译完成之后模块的后缀
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#定义使用原app签名可用选择项platform,shared,media
LOCAL_CERTIFICATE := PRESIGNED

#定义编译之后的位置,这里指的是system/vendor/apps/operator/app目录
LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app

#不进行odex
LOCAL_DEX_PREOPT := false
#若需要apk作为32bit的apk运行,则添加
LOCAL_MULTILIB :=32
#添加lib文件的引用,使用LOCAL_PREBUILT_JNI_LIBS列出所有so的路径,不要忘记使用@。
#@标识符会将apk中的so抽离出来build进apk同级目录下的lib文件夹中,可根据CPU的(TARGET_ARCH)不同类型对so进行处理
LOCAL_PREBUILT_JNI_LIBS := \
                     @lib/armeabi-v7a/xx.so \
                     @lib/armeabi-v7a/yy.so
include $(BUILD_PREBUILT)
  1. 打开文件 build/target/product/core.mk,将 Ma添加到 PRODUCT_PACKAGES中。
  2. 将从Ma.apk解压出来的 so库拷贝packages/apps/Ma/lib/目录下;若无so库,则去掉此步。
  3. 在packages/apps/Ma执行mmm命令,再刷机即可。

3 预置APK用户不可卸载

  1. 在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以 预制一个名为Ma的APK为例
  2. 将 Ma.apk 放到 packages/apps/Ma 下面;
  3. 在  packages/apps/Ma 下面创建文件 Android.mk,文件内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# 定义模块名称,一般和APK名字相同
LOCAL_MODULE := Ma
#要在哪总版本下编译,可选择值有user eng tests optional,optional表示任意版本都编译
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
#定义编译完成之后的类型:除了APPS,还有ETC,EXECUTABLES(.bin)SHARED_LIBRARIES(.so) 等选择值
LOCAL_MODULE_CLASS := APPS
#定义编译完成之后模块的后缀
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#定义使用原app签名可用选择项platform,shared,media
LOCAL_CERTIFICATE := PRESIGNED

#定义编译之后的位置,这里指的是system/apps目录
LOCAL_MODULE_PATH := $(TARGET_OUT)/app

#不进行odex
LOCAL_DEX_PREOPT := false
#若需要apk作为32bit的apk运行,则添加
LOCAL_MULTILIB :=32
#添加lib文件的引用,使用LOCAL_PREBUILT_JNI_LIBS列出所有so的路径,不要忘记使用@。
#@标识符会将apk中的so抽离出来build进apk同级目录下的lib文件夹中,可根据CPU的(TARGET_ARCH)不同类型对so进行处理
LOCAL_PREBUILT_JNI_LIBS := \
                     @lib/armeabi-v7a/xx.so \
                     @lib/armeabi-v7a/yy.so
include $(BUILD_PREBUILT)
  1. 打开文件 build/target/product/core.mk,将 Ma添加到 PRODUCT_PACKAGES中。
  2. 将从Ma.apk解压出来的 so库拷贝packages/apps/Ma/lib/目录下;若无so库,则去掉此步。
  3. 在packages/apps/Ma执行mmm命令,再刷机即可。

4 可以看出编译后存放的路径决定了这三种不同结果

Enjoy it !!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小馬佩德罗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值