APK 文件的 META-INF 文件夹中文件的用途是什么?

What are the purposes of files in META-INF folder of an APK file?

MANIFEST.MFCERT.SF[=20的用途是什么=] android APK 中 META-INF 文件夹中的文件。

android APK 文件实际上是一个 jar 文件(java 存档),它只是一个压缩或未压缩的普通 zip 文件。所有类型的 java 应用程序都使用 Jar 文件,它们具有特定的结构 - META-INF 文件夹包含关于 jar 文件携带的 java 包的清单信息和其他元数据。

这些文件的用途如下:

  1. MANIFEST.MF:包含了java运行-time环境在加载jar文件时使用的各种信息,比如哪个是main class to be 运行 来自 jar 文件、包的版本、内部版本号、包的创建者、java 小程序和 java webstart 包的安全性 policies/permissions、文件名列表jar 连同他们的 SHA1 摘要等
  2. CERT.SF:这包含所有文件的列表及其 SHA-1 摘要。
  3. CERT.RSA:这包含 CERT.SF 文件的签名内容以及用于对内容签名的 public 密钥的证书链。

例如,请参考示例 apk 文件 here。 如果您使用 7zip 等文件解压缩程序下载并展开此文件到您的桌面,您可以看到这些文件的示例。

在解压后的目录下,进入子目录META-INF,查看文件manifest.mf和*.sf文件的内容。以下是这些文件的前几行:

文件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