android 15 预置应用Android.mk文件编写预安装安装位置定义apk安装分区位置system、system_ext、product、vendor、odm1.安装在system/appLOCAL_SYSTEM_MODULE : true2.安装在system_ext/appLOCAL_SYSTEM_EXT_MODULE : true3.安装在product/appLOCAL_PRODUCT_MODULE : true4.安装在vendor/appLOCAL_VENDOR_MODULE : true5.安装在vendor/odm/appLOCAL_ODM_MODULE : trueapk安装在上述分区的哪个文件夹内1.安装在app文件夹内LOCAL_PRIVILEGED_MODULE : false2.安装在priv-app文件夹内LOCAL_PRIVILEGED_MODULE : true签名类型1.使用系统签名LOCAL_CERTIFICATE : platform2.使用原apk签名LOCAL_CERTIFICATE : PRESIGNED完整示例LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_SUFFIX : $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_MODULE : DouBaoAiXue LOCAL_MODULE_TAGS : optional LOCAL_BUILT_MODULE_STEM : package.apk #指定apk安装文件夹 #LOCAL_SYSTEM_MODULE : true #LOCAL_SYSTEM_EXT_MODULE : true #默认预置到product分区因为部分apk预置到system分区无法找到so文件如抖音、微信、WPS、腾讯元宝、纳米AI搜索等 LOCAL_PRODUCT_MODULE : true #LOCAL_VENDOR_MODULE : true #LOCAL_ODM_MODULE : true #安装在priv-app文件夹内 #LOCAL_PRIVILEGED_MODULE : true #展讯方案可卸载 #预置到system/preloadapp #LOCAL_MODULE_PATH : $(TARGET_OUT)/preloadapp #预置到system/vital-app #LOCAL_MODULE_PATH : $(TARGET_OUT)/vital-app LOCAL_MODULE_CLASS : APPS LOCAL_SRC_FILES : $(LOCAL_MODULE).apk #定义编译apk使用的签名类型 #LOCAL_CERTIFICATE : platform LOCAL_CERTIFICATE : PRESIGNED #要覆盖的模块名 #LOCAL_OVERRIDES_PACKAGES : Camera2 AWCamera #可选 LOCAL_DEX_PREOPT : false #解决mismatch in the uses-library tags between the build system and the manifest问题 LOCAL_ENFORCE_USES_LIBRARIES : false #定义apk依赖so位数与路径 #32位机器 #LOCAL_MULTILIB : 32 #LOCAL_PREBUILT_JNI_LIBS : $(sort $(shell cd $(LOCAL_PATH) ; find -L lib/armeabi-v7a -name *.so)) #64位机器 LOCAL_MULTILIB : 64 LOCAL_PREBUILT_JNI_LIBS : $(sort $(shell cd $(LOCAL_PATH) ; find -L lib/arm64-v8a -name *.so)) include $(BUILD_PREBUILT)精简示例LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE : cmcc_launcher LOCAL_MODULE_CLASS : APPS LOCAL_MODULE_TAGS : optional LOCAL_MODULE_SUFFIX : $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_SYSTEM_MODULE : true #可卸载不加这条则预置为不可卸载应用 LOCAL_MODULE_PATH : $(TARGET_OUT)/preloadapp LOCAL_CERTIFICATE : PRESIGNED LOCAL_SRC_FILES : cmcc_launcher.apk #解决v2签名apk预置失败问题 LOCAL_REPLACE_PREBUILT_APK_INSTALLED : $(LOCAL_PATH)/$(LOCAL_SRC_FILES) LOCAL_DEX_PREOPT : false LOCAL_ENFORCE_USES_LIBRARIES : false LOCAL_MULTILIB : 64 ifeq ($(LOCAL_MULTILIB), 64) LOCAL_PREBUILT_JNI_LIBS : $(sort $(shell cd $(LOCAL_PATH) ; find -L lib/arm64-v8a -name *.so)) else LOCAL_PREBUILT_JNI_LIBS : $(sort $(shell cd $(LOCAL_PATH) ; find -L lib/armeabi-v7a -name *.so)) endif include $(BUILD_PREBUILT)---- 方式二20240924添加LOCAL_PATH : $(call my-dir) ################################################################################ include $(CLEAR_VARS) LOCAL_MODULE : AwCamera14 LOCAL_MODULE_CLASS : APPS LOCAL_MODULE_TAGS : optional LOCAL_BUILT_MODULE_STEM : package.apk LOCAL_MODULE_SUFFIX : $(COMMON_ANDROID_PACKAGE_SUFFIX) #LOCAL_PRIVILEGED_MODULE : true #LOCAL_DEX_PREOPT : false LOCAL_CERTIFICATE : PRESIGNED LOCAL_OVERRIDES_PACKAGES : Camera2 AWCamera LOCAL_SRC_FILES : $(LOCAL_MODULE).apk LOCAL_REPLACE_PREBUILT_APK_INSTALLED : $(LOCAL_PATH)/AwCamera14.apk LOCAL_MULTILIB :64 LOCAL_PREBUILT_JNI_LIBS : \ lib/arm64-v8a/ld-android.so \ lib/arm64-v8a/libMNN.so \ lib/arm64-v8a/libMNN_CL.so \ lib/arm64-v8a/libai-engine.so \ lib/arm64-v8a/libaw_smile_det.so \ lib/arm64-v8a/libaw_utilities_standalone.so \ lib/arm64-v8a/libawf_align_v1.1.so \ lib/arm64-v8a/libbarhopper_v3.so \ lib/arm64-v8a/libbase.so \ lib/arm64-v8a/libc.so \ lib/arm64-v8a/libc_shared.so \ lib/arm64-v8a/libcutils.so \ lib/arm64-v8a/libdl_android.so \ lib/arm64-v8a/libmnnfacedetection.so \ lib/arm64-v8a/libmnnkitcore.so \ lib/arm64-v8a/libstitcher.so \ lib/arm64-v8a/libutils.so \ lib/arm64-v8a/libvndksupport.so \ lib/arm64-v8a/libyuv-utils.so include $(BUILD_PREBUILT) ################################################################################方式三20250618添加v2签名apk专用3-1# # v2签名apk预置专用配置 # # 可以不用在其他mk文件中显示的声明当前模块的LOCAL_PACKAGE_NAME只要能编译到就行 # LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS) LOCAL_PACKAGE_NAME : TuoKouPai LOCAL_SRC_FILES : cn.dayansoft.p70_app_2.8.6.apk #目标路径 #product分区TARGET_OUT_PRODUCT --out_system/target/product/ussi_arm64/product #system分区TARGET_OUT --out_system/target/product/ussi_arm64/system #system_ext分区TARGET_OUT_SYSTEM_EXT --out_system/target/product/ussi_arm64/system_ext $(shell mkdir -p $(TARGET_OUT)/app/$(LOCAL_PACKAGE_NAME)/lib/arm) $(shell mkdir -p $(TARGET_OUT)/app/$(LOCAL_PACKAGE_NAME)/lib/arm64) $(shell cp -r $(LOCAL_PATH)/$(LOCAL_SRC_FILES) $(TARGET_OUT)/app/$(LOCAL_PACKAGE_NAME)/$(LOCAL_SRC_FILES)) $(shell cp -r $(LOCAL_PATH)/lib/armeabi-v7a/* $(TARGET_OUT)/app/$(LOCAL_PACKAGE_NAME)/lib/arm/) $(shell cp -r $(LOCAL_PATH)/lib/arm64-v8a/* $(TARGET_OUT)/app/$(LOCAL_PACKAGE_NAME)/lib/arm64/)3-2自动脚本Android.mk将带v2签名的apk放到mk文件同目录下然后在thirdapp.mk中添加如下代码RMT_PRODUCT_R_APK $(basename $(notdir $(wildcard vendor/prebuilt_apps/lazytec_337_003/preloadapp_v2/*.apk)))那么所有在preloadapp_v2目录下的apk将自动集成LOCAL_PATH :$(call my-dir)define custom_prebuilt_apk include $$(CLEAR_VARS)LOCAL_MODULE :$(1)LOCAL_MODULE_TAGS :optional LOCAL_SRC_FILES :$(1).apk LOCAL_MODULE_CLASS :APPS LOCAL_MODULE_SUFFIX :$$(COMMON_ANDROID_PACKAGE_SUFFIX)LOCAL_MODULE_PATH :$$(TARGET_OUT)/preloadapp LOCAL_CERTIFICATE :PRESIGNED LOCAL_ENFORCE_USES_LIBRARIES :false# 使用绝对路径确保指向具体的APK文件LOCAL_REPLACE_PREBUILT_APK_INSTALLED :$$(LOCAL_PATH)/$(1).apk include $$(BUILD_PREBUILT)endef CUSTOME_VENDOR_ROOT :$(dir$(lastword$(MAKEFILE_LIST)))vendor_prebuilt_files :$(basename$(notdir$(wildcard$(CUSTOME_VENDOR_ROOT)*.apk)))$(foreach myfile,$(vendor_prebuilt_files),$(eval$(call custom_prebuilt_apk,$(myfile))))如果这篇文章有帮助到你欢迎打赏支持我的创作。