android 12 第三方apk系统签名

需求:客户有两个供应商,我们是其中之一,然后客户想将我们的apk 用 另一家供应商的系统签名,安装到另一家供应商的设备上,另一家供应商提供了系统签名文件

用之前的方法 (platform.x509.pem platform.pk8客户提供的)

 java -Xmx2048m -Djava.library.path=out/host/linux-x86/lib64 -jar out/host/linux-x86/framework/signapk.jar -w platform.x509.pem platform.pk8 aa.apk aasign.apk

签名成功

安装后提示报错

adb: failed to install aaasign.apk: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed collecting certificates for /data/app/vmdl1711630767.tmp/base.apk: Failed to collect certificates from /data/app/vmdl1711630767.tmp/base.apk: Attempt to get length of null array]

因为在android12平台这个方法不试用了

我们用另一种办法

1 把签名文件放在build/target/product/security, device/qcom/qssi/key

2 将apk放在系统中,修改makefile

3 编译版本,编译出来的apk就是使用放入的签名文件签名的apk」

前提要有一套android12的代码

然后把客户提供的系统签名文件放在build/target/product/security, device/qcom/qssi/key

然后仿照高通的apk,把要签名的apk放到vendor/qcom/proprietary/prebuilt_HY11/target/product/qssi下面

修改这个路径下的Android.mk 和prebuilt.mk

include $(CLEAR_VARS)
LOCAL_MODULE        := aa
LOCAL_MODULE_OWNER  := qcom
LOCAL_MODULE_TAGS   := optional
LOCAL_MODULE_CLASS  := APPS
LOCAL_CERTIFICATE   := platform
LOCAL_MODULE_SUFFIX := .apk
LOCAL_SRC_FILES     := ../../.././target/product/qssi/product/app/aa/aa.apk
LOCAL_MODULE_PATH   := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT)/app
include $(BUILD_PREBUILT)」

然后编译这个apk

然后编译出来的文件,安装就可以了

你可能感兴趣的:(android)