【发布时间】:2011-12-23 14:22:40
【问题描述】:
使用 Ant,我正在尝试以发布模式构建 Android 应用程序以进行分发。我的问题是在签名过程中。我已经使用导出 Android 应用程序向导通过 Eclipse 创建了一个密钥库和别名,如果通过 Eclipse 导出它,则该应用程序已正确签名。当我尝试通过 Ant 完成相同的过程时,我在 build.properties 文件中引用了我的密钥库和别名:
key.store=C:\\Users\\a512091\\.android\\release.keystore
key.alias=application
key.store.password=android
key.alias.password=android
构建过程成功,我得到一个 Application-release.apk 文件。我用 jarsigner 验证了这个 APK,所有文件都有“sm”标签。这是输出的尾部:
jar verified.
Warning:
This jar contains entries whose certificate chain is not validated.
当我尝试将此 APK 安装到模拟器或设备中时,我得到以下信息:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
Logcat 显示我的 CSS 文件和图像资产的签名问题:
11-07 11:06:20.060: WARN/PackageParser(58): Exception reading assets/www/css/base.css in /data/app/vmdl48898.tmp
11-07 11:06:20.060: WARN/PackageParser(58): java.lang.SecurityException: META-INF/XXXXX.SF has invalid digest for assets/www/res/droidhdpi/favorite_off.png in /data/app/vmdl48898.tmp
11-07 11:06:20.060: WARN/PackageParser(58): at java.util.jar.JarVerifier.verifyCertificate(JarVerifier.java:369)
11-07 11:06:20.060: WARN/PackageParser(58): at java.util.jar.JarVerifier.readCertificates(JarVerifier.java:272)
11-07 11:06:20.060: WARN/PackageParser(58): at java.util.jar.JarFile.getInputStream(JarFile.java:392)
11-07 11:06:20.060: WARN/PackageParser(58): at android.content.pm.PackageParser.loadCertificates(PackageParser.java:337)
11-07 11:06:20.060: WARN/PackageParser(58): at android.content.pm.PackageParser.collectCertificates(PackageParser.java:508)
11-07 11:06:20.060: WARN/PackageParser(58): at com.android.server.PackageManagerService.installPackageLI(PackageManagerService.java:5885)
11-07 11:06:20.060: WARN/PackageParser(58): at com.android.server.PackageManagerService.access$2100(PackageManagerService.java:134)
11-07 11:06:20.060: WARN/PackageParser(58): at com.android.server.PackageManagerService$5.run(PackageManagerService.java:4743)
11-07 11:06:20.060: WARN/PackageParser(58): at android.os.Handler.handleCallback(Handler.java:587)
11-07 11:06:20.060: WARN/PackageParser(58): at android.os.Handler.dispatchMessage(Handler.java:92)
11-07 11:06:20.060: WARN/PackageParser(58): at android.os.Looper.loop(Looper.java:123)
11-07 11:06:20.060: WARN/PackageParser(58): at android.os.HandlerThread.run(HandlerThread.java:60)
11-07 11:06:20.069: ERROR/PackageParser(58): Package com.xxxxx.xxxxx has no certificates at entry assets/www/css/base.css; ignoring!
【问题讨论】: