Android 构建 APK:
假设一个 apk 包含一个库 jar(例如 foo.jar),该库具有 META-INF/MANIFEST.MF,这对于它的运行很重要。但在APK中有一个包含签名数据的MANIFEST.MF,并且lib jar MANIFEST.MF丢失了。
APK
META-INF/MANIFEST.MF
有没有办法向 MANIFEST.MF 添加更多属性或将 lib jar MANIFEST.MF 合并到其中?
UPDATE
解压apk后,在MANIFEST.MF中添加一些属性并重新打包apk,
packageDebug {
doLast {
// add attributes to MANIFEST.MF
}
}
error:
Installation failed with message INSTALL_PARSE_FAILED_NO_CERTIFICATES:
Failed to collect certificates from /data/app/vmdl1096113886.tmp/base.apk:
META-INF/CERT.SF indicates /data/app/vmdl1096113886.tmp/base.apk is signed
using APK Signature Scheme v2, but no such signature was found. Signature stripped?.
MANIFEST.MF 和 CERT.SF 都包含相同的摘要哈希。修改MANIFEST.MF后是否需要重新签名apk? MANIFEST.MF 本身没有摘要哈希。
方案 V2 签名应该在哪里?
有没有办法在apk签名之前修改apk? packageDebug 的 doLast 来得太晚了。
您应该查看packagingOptions
Android Gradle 插件的配置块。
它基本上是一个 DSL 对象,可以用类似的方式配置
android {
packagingOptions {
excludes {
pickfirsts = [/file1, ...]
excludes = []
}
}
}
看一下文档
通常有一个默认过滤器,可以排除第三方库的 META-INF 下的正则表达式(在上面的示例中,我们将其设置为空)。
你的用例是什么?因为我还没有遇到过需要查找 manifest.mf 的 jar,除了验证内容的完整性之外。
是的,如果您重新打包 apk,则需要使用密钥库对其进行签名才能成功安装它。您可以选择使用 v2/v1 中的一个(或针对较低 api 的应用程序同时使用这两种)签名方案进行签名apksigner
来自 sdk 中的构建工具。
虽然没有必要这样做(如果你已经在你的buildscript
) so if packagingOptions
为你工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)