在Android APK的META-INF文件夹中,MANIFEST.MF、CERT.SF和CERT.RSA文件有什么作用?
安卓 APK 文件实际上是一个 JAR 文件(Java 归档文件),它只是一个普通的 ZIP 文件,可以有压缩或不压缩。JAR 文件被所有类型的 Java 应用程序使用,它们具有特定的结构——META-INF 文件夹包含有关 JAR 文件携带的 Java 包的清单信息和其他元数据。
这些文件的目的如下:
例如,参考样例 APK 文件here。如果您通过像 7zip 这样的文件解压缩程序将其下载并扩展到桌面上,您可以看到这些文件的样例。
在提取的目录中,进入子目录 META-INF 并查看文件 manifest.mf 和 *.sf 的内容。以下是这些文件的前几行:
File MANIFEST.SF:
Manifest-Version: 1.0
Created-By: 1.7.0_60 (Oracle Corporation)
Name: res/drawable-xxhdpi-v4/common_plus_signin_btn_text_dark_pressed.9.png
SHA1-Digest: Db3E0/I85K9Aik2yJ4X1dDP3Wq0=
Name: res/drawable-xhdpi-v4/opt_more_item_close_press.9.png
SHA1-Digest: Xxm9cr4gDbEEnnYvxRWfzcIXBEM=
Name: res/anim/accessibility_guide_translate_out.xml
SHA1-Digest: dp8PyrXMy2IBxgTz19x7DATpqz8=
MCTN.SF 文件包含 MANIFEST.MF 文件列表的摘要以及一个空行:
Signature-Version: 1.0
SHA1-Digest-Manifest-Main-Attributes: Sen4TNWb3NQLczkzN1idKh81Rjc=
Created-By: 1.7.0_60 (Oracle Corporation)
SHA1-Digest-Manifest: NAWTDC05HK+hfNtQ91J4AoL9F7s=
Name: res/drawable-xxhdpi-v4/common_plus_signin_btn_text_dark_pressed.9.png
SHA1-Digest: pvIZkdVTEuilCdx8UkrlY6ufPlw=
Name: res/anim/accessibility_guide_translate_out.xml
SHA1-Digest: XeX9Q2w41PRm3KiZ5p07x3CY6hc=
文件MCTN.RSA包含基于文件MCTN.SF生成的base64编码签名。
有关如何验证APK软件包签名的详细信息,请参见此参考链接 - http://theether.net/kb/100207