在已签名的 apk 中,会有一个META-INF/MANIFEST.MF文件。在这个文件中,我们可以找到这样的摘要:
名称:res/layout/main.xml SHA1-摘要:NJ1YLN3mBEKTPibVXbFO8eRCAr8=
名称:AndroidManifest.xml SHA1-摘要:BlnC6ZBDtQYWeJNiespsQve82wY=
名称:res/drawable-mdpi/ic_launcher.png SHA1-摘要:4ss2KZ3FzkmfE6HAAsVu0aJKx1U=
我找到了一种在 java 中生成摘要的方法,如下所示:
public static void main(String[] args) throws NoSuchAlgorithmException, Exception {
MessageDigest md = MessageDigest.getInstance("sha-1");
FileInputStream in = new FileInputStream("./ic_launcher.png");
int bytes = 0;
while ((bytes = in.read()) != -1) {
md.update((byte)bytes);
}
in.close();
byte[] thedigest = md.digest();
System.out.println(Base64Encoder.encode(thedigest));
}
为了测试,我使用这个简单的代码生成了一些摘要,这些摘要与 apk 中的META-INF/MANIFEST.MF的摘要大部分相同,并且仍然有少量异常。像这个PNG文件:
在 apk 中,此 png 文件的摘要为4ss2KZ3FzkmfE6HAAsVu0aJKx1U= ,这与我上面的代码生成的sjmKOs4BYDXg7COdeTc8tIfPBR0=非常不同。
但是如何解释我的代码生成的几乎有20个摘要与apk中的摘要相同,而只有这个Png的摘要不同?
您能否告诉我 SDK 或 ADT 如何为 Android 应用程序包的资源生成 SHA1-Digest,或者与我的代码有什么不同?
非常感谢!