阅读:10558回复:1
Android预装Apk的各种mk文件写法
以下内容是在下从网络搜集,部分内容还未验证,仅供大家学习交流,对使用过程中各种失败无效或因个人原因导致不成功而引起的失落、沮丧、头痛、烦闷、心情不佳等症状并由此引发的一切后果与本人无关,相关内容可能晦涩难懂,与Android系统开发无关人员请立即离开,未成年人请在父母陪同下观看。
因为工作需要,经常要开发和合入系统App,所以在此开篇作为收集和记录Android合入系统应用的方法,以备日后查阅。 一、预置apk方法 Case 1:如何将带源码的APK预置进系统
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := $(call all-subdir-java-files) LOCAL_PACKAGE_NAME := Test include $(BUILD_PACKAGE)
PRODUCT_PACKAGES += Test [backcolor=url(&]
Case 2:如何将无源码的 APK 预置进系统?
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_PREBUILT_JNI_LIBS:= \ @lib/armeabi/libtest.so \ @lib/armeabi/libtest2.so LOCAL_CERTIFICATE := PRESIGNED include $(BUILD_PREBUILT) 若无so,删除LOCAL_PREBUILT_JNI_LIBS 若有so,使用LOCAL_PREBUILT_JNI_LIBS列出所有so的路径,不要忘记使用@。@标识符会将apk中的so抽离出来build进apk同级目录下的lib文件夹中 若apk支持不同cpu类型的so,针对so的部分的处理: Ifeq ($(TARGET_ARCH),arm) LOCAL_PREBUILT_JNI_LIBS := \ @lib/armeabi-v7a/xxx.so\ @ lib/armeabi-v7a/xxxx.so else ifeq ($(TARGET_ARCH),x86) LOCAL_PREBUILT_JNI_LIBS := \ @lib/x86/xxx.so else ifeq ($(TARGET_ARCH),arm64) LOCAL_PREBUILT_JNI_LIBS := \ @lib/armeabi-v8a/xxx.so … 即将和TARGET_ARCH对应的so抽离出来
tip: 如果App使用System Level的permission,需要預置到/system/priv-app底下 (原在/system/app)。 修改Android.mk,增加LOCAL_PRIVILEGED_MODULE := true,以声明app需要放在/system/priv-app下。 Case 3:如何预置APK使得用户可以卸载,恢复出厂设置时不能恢复?
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_PRIVILEGED_MODULE := true LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS) LOCAL_CERTIFICATE := PRESIGNED include $(BUILD_PREBUILT)
PRODUCT_PACKAGES += Test
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS) Case 4:如何预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复?
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 LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app include $(BUILD_PREBUILT)
PRODUCT_PACKAGES += Test
若需要apk作为32bit的apk运行,则需要在Android.mk中定义 LOCAL_MULTILIB :=32 二、Android.mk文件参数说明
|
|||||||||||
最新喜欢:VastSt...
|
沙发#
发布于:2019-06-28 19:11
不错,Android.mk这个经常需要用到
|
|
|