【问题标题】:ADT v22 Debug Key and INSTALL_PARSE_FAILED_NO_CERTIFICATESADT v22 调试密钥和 INSTALL_PARSE_FAILED_NO_CERTIFICATES
【发布时间】:2013-06-07 20:12:14
【问题描述】:

我对 ADT v22 和我一直在开发的 APK 有疑问。

使用 ADT v22.0.1 我在“调试”中运行应用程序时收到此错误

[2013-06-07 12:31:00 - Star Traders] Installation error: INSTALL_PARSE_FAILED_NO_CERTIFICATES
[2013-06-07 12:31:00 - Star Traders] Please check logcat output for more details.
[2013-06-07 12:31:01 - Star Traders] Launch canceled!

logcat 包含

D/dalvikvm(  703): GC_FOR_MALLOC freed 467 objects / 234568 bytes in 189ms
D/NativeCrypto(  703): OpenSSL error 101105774: error:0606C06E:digital envelope routines:EVP_Ver:
W/PackageParser(  703): Exception reading assets/img/combatflowchart/BountyHunter.png in /data/app/vmdl41201.tmp
W/PackageParser(  703): java.lang.SecurityException: /data/app/vmdl41201.tmp failed verification of META-INF/CERT.SF
W/PackageParser(  703):         at java.util.jar.JarVerifier.verifyCertificate(JarVerifier.java:320)
W/PackageParser(  703):         at java.util.jar.JarVerifier.readCertificates(JarVerifier.java:272)
W/PackageParser(  703):         at java.util.jar.JarFile.getInputStream(JarFile.java:392)
W/PackageParser(  703):         at android.content.pm.PackageParser.loadCertificates(PackageParser.java:337)
W/PackageParser(  703):         at android.content.pm.PackageParser.collectCertificates(PackageParser.java:508)
W/PackageParser(  703):         at com.android.server.PackageManagerService.installPackageLI(PackageManagerService.java:5891)
W/PackageParser(  703):         at com.android.server.PackageManagerService.access$2100(PackageManagerService.java:134)
W/PackageParser(  703):         at com.android.server.PackageManagerService$5.run(PackageManagerService.java:4749)
W/PackageParser(  703):         at android.os.Handler.handleCallback(Handler.java:587)
W/PackageParser(  703):         at android.os.Handler.dispatchMessage(Handler.java:92)
W/PackageParser(  703):         at android.os.Looper.loop(Looper.java:123)
W/PackageParser(  703):         at android.os.HandlerThread.run(HandlerThread.java:60)
E/PackageParser(  703): Package com.corytrese.games.startraders has no certificates at entry assets/img/combatflowchart/BountyHunter.png; ignoring!
D/dalvikvm(  703): GC_EXPLICIT freed 5063 objects / 519480 bytes in 215ms
D/AndroidRuntime( 1576): Shutting down VM

我试图通过删除“assets/img/combatflowchart/BountyHunter.png”来修复它,并且在应用程序本身中删除的文件数量都无法消除错误,它只是移动到下一个文件。使用“aapt”工具,我可以看到文件已签名。

这会在 Android 2.2.1 和 Android 2.2.2 上发生,但不会在 2.3.5、2.3.7、4.1.1 或 4.2 上发生

我已经能够通过删除 ~/.android/debug.keystore 并允许 ADT v22 重新创建密钥来解决调试问题。

但是,旧密钥与多个服务相关联。旧的调试密钥适用于我的大多数测试设备,但其中两个 2.2.x 设备不再运行它(在 ADT v22 升级之后)。

有谁知道如何解决它,以便...

调试密钥 + ADT v22 + Android OS v2.2.1 = 成功?

【问题讨论】:

    标签: java android adt eclipse-adt aapt


    【解决方案1】:

    我通过删除文件夹 %user_profile% .android 中的文件 debug.keystore 并重新编译 Android 项目来解决... 问题似乎已经解决了。

    如果还是不行,试试下面的命令

    keytool -genkey -v -keystore myapp.keystore -alias myapp -keyalg DSA -keysize 1024 -validity 10000
    

    就我而言,当我在 Eclipse 上使用导出向导时会出现问题。 以下命令没问题(MyApp.apk 未签名)。

    jarsigner -verbose -keystore myapp.keystore MyApp.apk myapp
    

    我的其他密钥库是SHA1withRSA算法,没问题。

    【讨论】:

    • 我没有对你投反对票。我很欣赏这个答案——我同意。在我的问题中,我确实说过“我已经能够通过删除 ~/.android/debug.keystore 来解决调试问题”,但我想弄清楚的是如何让 OLD 密钥库与 ADT22 和 Android 2.2 一起使用.2.谢谢你!
    • 接受这个,因为它是唯一的选择。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2013-05-28
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多