尝试安装Android更新时,用户收到错误“包文件未正确签名”。具体而言,只有具有较旧Android OS版本设备的用户才会遇到此错误。
从当前的制作应用版本更新到更新的制作应用。没有涉及开发设备,侧面装载等。
应用程序的新版本使用API>进行编译21,因此需要Java 1.7。
使用Gradle通过Groovy配置文件构建,签名和对齐apk作为CI构建的一部分。
答案 0 :(得分:1)
确保涉及jarsigner
的Gradle构建脚本步骤指定要使用的算法。
使用jarsigner
对.apk文件进行签名的Gradle任务的一部分可能如下所示:
ant.signjar(jar: packageRelease.outputs.files.singleFile,
alias: 'keyStoreAlias',
keystore: file('../keystore/keystore.jks').canonicalPath,
storepass: 'cCureP@55',
sigalg: 'SHA1withRSA',
digestalg: 'SHA1',
signedjar: outputFile.canonicalPath)
关键是这两个论点:
基于Java 1.6的设备似乎无法理解Java 1.7中jarsigner
使用的新默认算法。
Android developer documentation specifies these arguments,但不认为这些参数对于避免此类安装/更新错误至关重要。
以下是文档部分的片段,向您展示了手动签署应用的步骤:
$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1
-keystore my-release-key.keystore my_application.apk alias_name