[Description]:
apk放置路径:alps\vendor\...\system\app\下,
apk解压缩中的lib文件放置路径:alps\vendor\...\system\lib下
apk启动报错。
但是将apk直接放在alps\out\...\system\app下,或者直接手动安装到手机系统中就没有此问题。
根据log看是无效签名的原因,请问是否在编译copy到out目录下的过程中修改了apk包签名导致?该如何解决?
[solution]
直接放置在vendor/.../system/app/下会导致应用被重签名为系统签名。下面给出一种方案:
如何将无源码的 APK 预置进系统?
1) 在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预制一个名为Test的APK为例
2) 将 Test.apk 放到 packages/apps/Test 下面
3) 在 packages/apps/Test 下面创建文件 Android.mk,文件内容如下:
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
include $(BUILD_PREBUILT)
4) 打开文件 build/target/product/${Project}.mk (其中 ${Project}
表示工程名)
将 Test 添加到 PRODUCT_PACKAGES 里面。
5) 将从Test.apk解压出来的
so库拷贝到alps/vendor/mediatek/${Project}/artifacts/out/target/product/${Project}/system/lib/目录下,若无
so 库,则去掉此步;
6) 重新 build 整个工程