问题 Android APK文件的MD5校验和不同。为什么?


我注意到如果我两次编译一个Android应用程序,一个接着没有更改,那两个APK文件有两个不同的MD5校验和。未签名和签名的APK文件都会产生相同的结果。

您可以将其打开为ZIP文件,其中的内容在两个文件中都有相同的MD5校验和,所以我很好奇。

那里还有什么?这两个APK文件有什么不同?


9531
2018-03-26 06:50


起源

也许APK文件存储编译时的时间戳?我会查看APK格式的规范,看看是否存在类似的东西...... - Robert Rouhani
听起来很可能。无法找到有关APK格式的详细信息。 APK与JAR不同?我想它会有一些额外的东西。 - Melissa Ethrin
apk文件实际上是具有特定文件内容的zip文件,就像.jar一样 - reox


答案:


ZIP文件格式在其标题中存储最后修改日期: http://en.wikipedia.org/wiki/Zip_(file_format)#File_headers

所以MD5 Sum不同,因为标题略有不同。


12
2018-03-26 08:08



那么,如果您编译APK,提取内容,创建它们的ZIP,将其重命名为APK,它运行?今晚要试试这件事,然后再对人类做同样的基本事情。 - Melissa Ethrin
其实是的! unzip test.apk; rm test.apk; zip -r test.zip ./*; mv test.{zip,apk}; adb install test.apk 作品。甚至MD5总和也不同:950b9077d8a2a3be45ba207c0c0a2251 test.apk e0ae339a5ecd3080f8359fc06a4c3e29 test.zip.apk - reox


也许“签名”的东西使得MD5校验和有所不同?


0
2018-03-26 06:54



编辑。事实证明,这在签名和未签名的APK中都会发生。 - Melissa Ethrin