【问题标题】:Generate non-debug apk from ionic从 ionic 生成非调试 apk
【发布时间】:2016-03-11 01:04:42
【问题描述】:
我正在使用 ionic 框架为 android 平台生成 apk。
运行ionic build android后,会生成一个android-debug.apk。如何生成更小更快的非调试 apk?
【问题讨论】:
标签:
android
angularjs
cordova
ionic-framework
hybrid-mobile-app
【解决方案1】:
这是我的 android 发布 shell 脚本
如果
clear
gulp
ionic build --release android
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore "path/to/your/keystore" "platforms/android/build/outputs/apk/android-release-unsigned.apk" "keystore alias" -storepass xxx -keypass xxx
/path/to/android-sdk/build-tools/23.0.2/zipalign -v 4 "platforms/android/build/outputs/apk/android-release-unsigned.apk" "android-release.apk"
rm "platforms/android/build/outputs/apk/android-release-unsigned.apk"
【解决方案2】:
在 cordova 6.2.0 中,您可以使用以下命令发布 apk。由于 ionic 是科尔多瓦的包装,这应该可以工作。
cd cordova/ #change to root cordova or ionic folder
platforms/android/cordova/clean #clean if you want
cordova build android --release -- --keystore="/path/to/keystore" --storePassword=password --alias=alias_name #password will be prompted if you have any
【解决方案3】:
由于 ionic CLI 基于cordova CLI,您可以直接使用:
ionic build android --release
另外,如果您担心优化,您可能会发现有趣的用法 zipalign,以便在 4 字节边界上对齐数据,从而使应用程序减少使用的 RAM 量。使用前面的命令构建发布 apk 后,您可以运行:
zipalign -v 4 yourReleaseApp.apk zipalignedReleaseApp.apk
【解决方案5】:
1.要发布Android版本,我们可以使用以下cordova cli命令
ionic cordova build --release android
2. 构建 apk 未签名。需要签字。这就是为什么使用 JDK 的 keytool 创建私钥的原因。我们可以使用下面的cli命令
keytool -genkey -v –keystore mykey.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
将 mykey.keystore 文件保存在安全的地方以备将来使用。
如果 keytool 不起作用,则复制此文件的路径并将其设置在系统环境变量中。
3. 现在使用以下命令对未签名的 apk 进行签名
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore mykey.keystore projectpath\platforms\android\build\outputs\apk\android-release-unsigned.apk alias_name
4.最后优化apk文件。
zipalign -v 4 projectpath\platforms\android\build\outputs\apk\android-release-unsigned.apk projectpath\platforms\android\build\outputs\apk\android-release.apk
更多详情,您可以访问以下网址
Build Release APK of Android Application from ionic