【问题标题】:AOSP: Cannot pack presigned apkAOSP:无法打包预签名的 apk
【发布时间】:2021-05-05 17:51:08
【问题描述】:

我在 Android Studio 中构建我的项目并生成签名的 apk,然后将我的 apk 放入 Android 开源项目中以将我的应用与系统映像打包。
我跟着these steps 用系统映像打包我的应用程序。
我的问题是Android.mk 中的这一行:

LOCAL_CERTIFICATE := < desired key >

如果我不签署 apk 并使用

LOCAL_CERTIFICATE := platform

一切顺利,构建成功
但如果我签署我的 apk 并使用

LOCAL_CERTIFICATE := PRESIGNED

我的构建失败并出现错误 1:

make: *** [out/target/product/helpera64-v2/obj/APPS/MyApp_intermediates/package.apk] Error 1

对于详细日志,我使用 make showcommands 创建项目,这就是发生错误的地方:

mv out/target/product/helpera64-v2/obj/APPS/MyApp_intermediates/package.apk out/target/product/helpera64-v2/obj/APPS/MyApp_intermediates/package.apk.unaligned
out/host/linux-x86/bin/zipalign -f -p 4 out/target/product/helpera64-v2/obj/APPS/MyApp_intermediates/package.apk.unaligned out/target/product/helpera64-v2/obj/APPS/MyApp_intermediates/package.apk.aligned
make: *** [out/target/product/helpera64-v2/obj/APPS/MyApp_intermediates/package.apk] Error 1

所以问题是 zipalign!构建系统不应该对签名的 apk 使用 zipalign,但为什么要使用呢?

我的完整 Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := MyApp
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_DEX_PREOPT := false
LOCAL_MODULE_PATH := $(TARGET_OUT)/preinstall
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_SRC_FILES := my_app.apk
LOCAL_PRIVILEGED_MODULE = true
LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3


include $(BUILD_PREBUILT)

【问题讨论】:

    标签: android android-source android-signing


    【解决方案1】:

    mv out/target/product/helpera64-v2/obj/APPS/MyApp_intermediates/package.apk out/target/product/helpera64-v2/obj/APPS/MyApp_intermediates/package.apk.unaligned

    out/host/linux-x86/bin/zipalign -f -p 4 out/target/product/helpera64-v2/obj/APPS/MyApp_intermediates/package.apk.unaligned out/target/product/helpera64-v2/ obj/APPS/MyApp_intermediates/package.apk.aligned

    make: *** [out/target/product/helpera64-v2/obj/APPS/MyApp_intermediates/package.apk] 错误 1

    从错误日志看,zipalign命令执行失败,所以可能失败的原因是你的apk错误align。也许您可以按照Android's zipalign 文档来确保您的apk 使用正确的align

    PS:我也遇到过类似的问题,因为presigned apk有错误alignso文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 2017-12-06
      • 2020-06-29
      相关资源
      最近更新 更多