背景
Android Studio版本
debug版本可以安装运行正常,release版本安装不上,使用adb指令报错:
Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION]
网上搜到的结果
-
没有使用正确的签名姿势 reference
android 2.3 之前使用v1签名,对应android7 之前。所以如果在较旧的设备上安装release版本需要使用v1版签名,至少签名时候需要勾选v1,v2也可以一起勾选上
未能完全卸载debug版本
在签名配置中添加 zipAlignEnabled false 关闭zip压缩优化 reference
但是,这些都不解决我的问题 🙃
重点来了
使用原生Google系统, adb install xxx.apk 之后发现更多可用的debug信息
Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: Failed reading res/raw/xxx.xxx in android.util.jar.StrictJarFile@5fdc588: META-INF/MANIFEST.MF has invalid digest for res/raw/xxx.xxx in res/raw/xxx.xxx]
原因:打包中的文件的安全验证与META-INF/MANIFEST.MF 中的不符
产生原因:
发现相关的文件是在module library中的 res/asset,打包过程由于android studio的原因,未能把module library 模块库按照release进行打包融合到release版本的apk中
解决办法
现将module library使用 assembleRelease
打包成 xxx-release.aar 包,然后使用放入到app的libs路径下,重新添加依赖。
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(dir: 'libs', include: ['*.aar'])
...
}