我使用一个build.json
文件来构建和签名我的Android版本的Ionic应用程序。
所以在build.json
中
{
"android": {
"debug": {
"keystore": "MyApp.keystore",
"storePassword": "mypassword",
"alias": "MyApp",
"password": "mypassword",
"keystoreType": ""
},
"release": {
"keystore": "MyApp.keystore",
"storePassword": "mypassword",
"alias": "MyApp",
"password": "mypassword",
"keystoreType": ""
}
}
}
然后我会用...
ionic cordova build android --prod --release --buildConfig=platform_build_files/android/build.json
这会在一个命令中生成我的签名文件。我刚刚(令人震惊地!)意识到我已经忘记了所有我看到到处提到的zipalign
。
我的问题是,上面的也是zipalign吗?如果不是,我怎么能也包括这个(我能把它作为一个npm脚本运行,这样我就可以很容易地通过npm run
调用它了吗?
1条答案
按热度按时间egmofgnx1#
我和你有同样的担心,
cordova
文档没有涉及这个问题。我只是在阅读你的问题后发现一个GH问题,其中提到zipalign
似乎被使用。https://github.com/apache/cordova-android/issues/1077现在,如果你阅读GH问题和
zipalign
文档,它说,当你zipalign
的问题,在签署之前或之后,取决于你如何签署APK,例如jarsigner
与apksigner
.然而,如果你读了所有的评论,看起来Android Gradle插件似乎正在做所有的工作, cordova 团队不知道引擎盖下会发生什么,这可能是他们不知道的原因别在文件里提。唯一能让我平静下来的是通过运行以下命令来检查生成的已签名APK是否确实对齐:
zipalign -c -v 4 platforms/android/app/build/outputs/apk/release/app-release.apk
如果成功,则以
Verification successful
结尾;如果失败,则以Verification FAILED
结尾。您可以排除包含OK
的行,以查看哪些行失败:zipalign -c -v 4 platforms/android/app/build/outputs/apk/release/app-release.apk | grep -v OK
(或| grep BAD
,如果您愿意)下面是有趣的部分。我已经通过删除
--buildConfig
标志验证了生成的APK(因此输出没有签名),有趣的是,APK仍然通过了zipalign
检查。请注意,如果有问题,我使用cordova 11.0.0
。我听说只有cordova 8.0.0+zipalign
s,可能取决于cordova
附带的Android Gradle插件,但由于缺少文档,我无法确认。