声明
- Android系统定制时免不了预置一些APP进系统中;
- 预置的结果一般有三种:
1.预置的APK用户可以卸载,恢复出厂设置后APK不恢复;
2.预置的APP用户可以卸载,但恢复出厂设置后APK恢复;
3.预置的APK用户不可以卸载;
1 预置APK用户可以卸载,恢复出厂设置后APK不恢复
- 在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以 预制一个名为Ma的APK为例
- 将 Ma.apk 放到 packages/apps/Ma 下面;
- 在 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)
- 打开文件 build/target/product/core.mk,将 Ma添加到 PRODUCT_PACKAGES中。
- 将从Ma.apk解压出来的 so库拷贝packages/apps/Ma/lib/目录下;若无so库,则去掉此步。
- 在packages/apps/Ma执行mmm命令,再刷机即可。
2 预置APK用户可以卸载,恢复出厂设置后APK可恢复
- 在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以 预制一个名为Ma的APK为例
- 将 Ma.apk 放到 packages/apps/Ma 下面;
- 在 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)
- 打开文件 build/target/product/core.mk,将 Ma添加到 PRODUCT_PACKAGES中。
- 将从Ma.apk解压出来的 so库拷贝packages/apps/Ma/lib/目录下;若无so库,则去掉此步。
- 在packages/apps/Ma执行mmm命令,再刷机即可。
3 预置APK用户不可卸载
- 在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以 预制一个名为Ma的APK为例
- 将 Ma.apk 放到 packages/apps/Ma 下面;
- 在 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)
- 打开文件 build/target/product/core.mk,将 Ma添加到 PRODUCT_PACKAGES中。
- 将从Ma.apk解压出来的 so库拷贝packages/apps/Ma/lib/目录下;若无so库,则去掉此步。
- 在packages/apps/Ma执行mmm命令,再刷机即可。