Ionic 3发布Android应用时apksigner verify签名警告问题求助
解决Ionic 3 APK签名验证时META-INF版本文件未受保护的警告
嘿,我之前打包Ionic 3 Android应用的时候也碰到过一模一样的警告!别慌,这不是什么严重问题,只是Android架构组件相关的版本标记文件没被签名覆盖到而已,咱们可以用下面两种方法解决:
方法一:Gradle自动移除(推荐)
Ionic的Android项目底层是用Gradle构建的,咱们可以在platforms/android/build.gradle里加一段配置,让打包过程自动删掉这些多余的.version文件:
打开platforms/android/build.gradle,找到android节点,添加这段代码:
android { // 保留你原来的其他配置,比如compileSdkVersion、defaultConfig这些 applicationVariants.all { variant -> variant.outputs.each { output -> output.packageApplication.doLast { // 删除所有META-INF下的.version文件 delete(fileTree(dir: output.outputFile.parent, includes: ['META-INF/*.version'])) } } } }
保存后,重新执行打包命令:
ionic cordova build android --release
再用apksigner verify myapp.apk验证,那些警告就消失啦。
方法二:手动删除(临时应急)
如果不想改Gradle配置,也可以手动处理:
- 把你的
myapp.apk重命名为myapp.zip,解压到一个文件夹里 - 进入解压后的
META-INF目录,删掉所有以.version结尾的文件(比如android.arch.core_runtime.version、android.arch.lifecycle_livedata-core.version) - 把解压后的文件重新压缩成
myapp.zip,再改回myapp.apk - 重新用apksigner签名这个修改后的APK
不过手动方法每次打包都要重复操作,还是Gradle自动处理更省心。
顺便说一句:这些警告其实不会影响APK的正常安装和运行,只是apksigner提醒你这些文件没被签名保护,理论上存在被篡改的风险,但实际开发中这些都是依赖库生成的版本标记,没有敏感内容,解决掉只是让签名验证更干净而已。
内容的提问来源于stack exchange,提问作者Zubli Quzaini
相关产品推荐
相关产品推荐

