在android 6.0 上预制第三方应用时报错
文件 Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := frameo
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_MODULE_CLASS := APPS
LOCAL_PRIVILEGED_MODULE := true
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_DEX_PREOPT := false
LOCAL_SRC_FILES := xxx.apk
include $(BUILD_PREBUILT)
编译错误,没有任何错误提示
......
make: *** [out/target/product/astar-M789/obj/APPS/frameo_intermediates/package.apk] Error 1
make: *** Waiting for unfinished jobs....
......
#### make failed to build some targets (03:38 (mm:ss)) ####
经过多次尝试法相,可能时应用高版本应用签名问题导致的
方式1:更改 LOCAL_CERTIFICATE 配置(这样改可能会导致应用出现别的错误,后面改为预装的方式)
LOCAL_CERTIFICATE := PRESIGNED
改为
LOCAL_CERTIFICATE := platform
方式2:
预装方式有两种:
1.)预制到目录
/system/preinstall (\android\frameworks\base\services\core\java\com\android\server\SystemServer.java)
2.)预制到目录(如果是launcher应用,推荐使用该方式,该方式应用安装要早于前一种,体验更加 .../PackageManagerService.java)
/system/precopy
\android\device\softwinner\common\prebuild\tools\precopy.sh
这里会copy文件到 /data/app/目录
\android\build\core\Makefile
-define check-product-copy-files
-$(if $(filter %.apk, $(call word-colon, 2, $(1))),$(error \
+#define check-product-copy-files
+#$(if $(filter %.apk, $(call word-colon, 2, $(1))),$(error \
Prebuilt apk found in PRODUCT_COPY_FILES: $(1), use BUILD_PREBUILT instead!))
-endef
+#endef
\android\device\softwinner\xxx\xxx.mk
# copy app to system/precopy/ catalogue Animation phase installation
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/customer/apk/xxxx.apk:system/precopy/xxxx.apk
3.)copy /system/priv-app/ 目录也是可以的
\android\device\softwinner\xxx\xxx.mk
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/customer/apk/Manufacturer-test_v1.9.14.apk:system/priv-app/xxx/xxx.apk
网友评论