Cordova构建Android签名AAB/APK时构建成功但产物未签名的排查求助
我现在正在用Cordova开发一款要发布到Google Play Store的Android应用,按照签名构建的流程操作后,构建日志显示完全成功,但最终生成的AAB包用jarsigner验证时却提示未签名,实在搞不懂哪里出了问题,想请大家帮忙排查一下。
我的操作流程与配置
- 执行的构建命令:
cordova build android --release --buildConfigANDROID_HOME=/Users/dev002/Library/Android/sdk
构建日志最终输出BUILD SUCCESSFUL,无报错,关键片段如下:
BUILD SUCCESSFUL in 4s 61 actionable tasks: 58 executed, 3 up-to-date Built the following bundle(s): /Users/dev002/dev/mobile-cordova-3/cordova/platforms/android/app/build/outputs/bundle/release/app-release.aab
- 项目根目录下的
build.json配置:
{ "android": { "debug": { "keystore": "sign-key-1.jks", "storePassword": "xxx", "alias": "key0", "password": "xxx", "keystoreType": "jks", "packageType": "apk", "v1SigningEnabled": true, "v2SigningEnabled": true }, "release": { "keystore": "sign-key-1.jks", "storePassword": "xxx", "alias": "key0", "password": "xxx", "keystoreType": "jks", "packageType": "bundle", "v1SigningEnabled": true, "v2SigningEnabled": true } } }
- 验证结果:
执行jarsigner -verify app-release.aab后,输出:
no manifest jar is unsigned
我怀疑的几个方向,也想请大家补充其他排查点
构建命令语法错误:
我发现自己把--buildConfig和ANDROID_HOME的设置连写成了--buildConfigANDROID_HOME,是不是这里的语法错误导致Cordova根本没读取到build.json?正常应该是cordova build android --release --buildConfig build.json ANDROID_HOME=/xxx这样分开传参对吧?密钥文件路径问题:
build.json里的keystore值是sign-key-1.jks,这个路径是相对于我执行cordova build的项目根目录吗?会不会Cordova实际是从platforms/android目录去查找这个文件,导致找不到密钥文件却没报错?签名任务是否实际触发:
看构建日志里完全没有:app:signReleaseBundle相关的任务输出,是不是说明签名步骤根本没被执行?除了buildConfig未加载,还有什么原因会导致跳过签名?验证工具的适配性:
jarsigner是不是不适合验证AAB包的签名?是不是应该用Google官方的apksigner工具来验证?比如执行apksigner verify --verbose app-release.aab?
有没有遇到过类似问题的朋友,或者熟悉Cordova Android签名流程的大佬,能给点排查思路或者解决方案吗?谢谢大家!




