调试版本:META-INF/CERT.SF 具有无效摘要

Per*_*man 6 android signing android-studio

我的调试版本未安装在某些早期设备上。在安装过程中,Android 会记录一个错误,例如:

java.lang.SecurityException:META-INF/CERT.SF 的摘要无效...

我很确定这与在签署调试 APK 时使用 SHA1 与 SHA256 有关。它可以安装在 Android 5 及更高版本上,但不能安装在 Android 4.1 上。我的版本在两者上构建安装,我指定同时使用 V1 和 V2 签名。

最近当我更新我的开发环境时,这个问题开始出现。我意识到 v2 签名已经存在了一段时间,但显然在我之前的更新中有些东西“卡在了过去”,直到现在才真正使用 v2 签名。

以下是早期版本的 CERT.SF 中的几行代码,该版本安装在 Android 4.1 上:

Signature-Version: 1.0
X-Android-APK-Signed: 2
SHA1-Digest-Manifest: 5uKyIdhWpwJ5DqL2eY6yywRve60=
Created-By: 1.0 (Android)

Name: res/drawable-hdpi-v4/task_priority_full_mask.png
SHA1-Digest: mgbQEI7yIlWN/S81eXILs9yQsx0=

Name: res/layout/intrinsic_calendar_item.xml
SHA1-Digest: fDHWqyZu4G7746oUndD2w3+SEpU=

Name: res/drawable-hdpi-v4/call_outgoing.png
SHA1-Digest: qjFodzSd/IiusVuP/fmJp8AMwpM=
Run Code Online (Sandbox Code Playgroud)

而且,这是新的 CERT.SF 中的几行,它安装失败:

Signature-Version: 1.0
X-Android-APK-Signed: 2
SHA-256-Digest-Manifest: oYH6iW7P/SZv6wI2m3sLn/GAfEtKxfO8gok/TVB6n1Y=
Created-By: 1.0 (Android)

Name: res/drawable-hdpi-v4/task_priority_full_mask.png
SHA-256-Digest: LfLVegeMx7B2i8CF5ctrZ+Ab2FHqlpxVPJgsgojbp6A=

Name: res/layout/intrinsic_calendar_item.xml
SHA-256-Digest: 5hrCEplQJgsiRbbJssNvd8faCTkHGAmAptub/ZPHPdk=

Name: res/drawable-hdpi-v4/call_outgoing.png
SHA-256-Digest: EXwgtHDkKbPUezjL9rOuuButu4w7E6e5r9YMTGxQhh8=
Run Code Online (Sandbox Code Playgroud)

请注意,新版本具有 SHA-256 摘要,而旧版本具有 SHA1 摘要。