You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ADT编译Adobe AIR应用时,如何解决Android APK签名失败警告?

解决Harman AIR SDK 50+使用旧RSA-1024证书签名APK的问题

核心问题原因

Harman AIR SDK 50+依赖Java 8+环境,但Java 8及以上默认禁用了对RSA-1024证书的弱签名算法支持;同时新版Android Build Tools(29+)移除了旧打包流程依赖的dx.jar,导致Legacy打包模式失效。


可行解决方案

方案1:启用Legacy打包模式并指定兼容的Build Tools版本

这是最直接的解决方式,适配旧证书的签名流程:

  • 打开Android SDK Manager,安装Build Tools 28.0.3(或更早版本,比如26.0.2),该版本保留了dx.jar文件
  • 修改应用的application.xml,在<android>节点内添加以下配置:
    <android>
        <BuildLegacyAPK>true</BuildLegacyAPK>
        <buildToolsVersion>28.0.3</buildToolsVersion>
    </android>
    
  • 重新执行ADT打包命令,此时会使用旧版打包流程,兼容你的RSA-1024证书

方案2:打包时强制指定兼容的签名算法

在ADT打包命令中显式指定签名和摘要算法,绕过Java 8的默认限制:

  • 在打包命令中添加-sigalg SHA1withRSA和-digestalg SHA1参数,示例完整命令:
    adt -package -target apk-captive-runtime \
        -storetype pkcs12 -keystore your_old_cert.p12 -storepass your_password \
        -sigalg SHA1withRSA -digestalg SHA1 \
        your_output.apk your_app.xml your_main.swf assets/
    
  • 该参数会强制ADT使用旧版签名逻辑,适配RSA-1024证书

方案3:转换证书格式为JKS后重新打包

将旧的PKCS12证书转换为JKS格式,可能提升兼容性:

  • 使用Java的keytool工具转换证书:
    keytool -importkeystore \
        -srckeystore your_old_cert.p12 -srcstoretype PKCS12 \
        -destkeystore converted_cert.jks -deststoretype JKS
    
  • 打包时使用转换后的JKS证书,同样建议搭配方案2的签名算法参数

避坑提示

  • 不要尝试降级Java到7或6:Harman AIR SDK 50+已不再支持Java 7及以下环境,会触发JDK版本不兼容报错
  • 不要手动复制/重命名d8.jar为dx.jar:两者内部逻辑完全不同,会导致主清单属性缺失的错误

内容的提问来源于stack exchange,提问作者OMA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:05:19