Ionic+Angular 开发移动应用七:打包APK文件

打包APK文件

欢迎交换友链: Laker’s Blog–进击的程序媛
Github:https://github.com/younglaker
V信: lakerHQ (请注明‘来自博客’)

打包正式apk:

1
2
ionic build android -—release
// 不带 —-release 就是测试包

然后会根据config.xml配置生成apk,在root/platforms/android/build/ouputs/apk 里生成android-release-unsigned.apk,这个是未生成签名的apk

生成证书

1
keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore

把demo换成你想要的名字

然后设置密码、回答一系列问题

注意:此demo.keystore证书要保留好,是app打包的唯一凭证,再生成就相当于另一个app

签名

官网上的命令我运行了报错,经过查找资料用了这个命令:

1
jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk android-release-unsigned.apk demo.keystore

替换以下内容

  • demo.keystore:之前生成的keystore
  • demo_signed.apk:自定义签名后的apk的名字
  • android-release-unsigned.apk:之前build生成的文件

运行结果:

1
2
3
4
5
6
7
8
....
signing: res/xml/config.xml
signing: res/xml/provider_paths.xml
signing: resources.arsc
jar signed.
Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (2126-09-10) or after any future revocation date.

最后的报错是说没有提供时间戳,不影响。此时已经生成一个签名的apk,可以在手机上安装运行。

常见报错:

1
Jar signer, Unable to open xxx.apk

keystore和未签名的apk不在一个路径,可以把他们剪切到一个目录下,或者在命令里指明路径,如:

1
jarsigner -verbose -keystore path/demo.keystore -signedjar path/demo_signed.apk android-release-unsigned.apk demo.keystore

优化

安装zipalign

1
sudo apt-get update

运行

1
zipalign -v 4 demo_signed.apk final.apk

final.apk即最终编译出来的带签名的app,可用于正式发布

1
2
3
4
5
-c Check alignment only (does not modify file)
-f Overwrite existing outfile.zip
-p Page align stored shared object files
-v Verbose output
-z Recompress using Zopfli

卸载

1
2
3
4
5
6
7
8
# 普通卸载
sudo apt-get remove zipalign
# 把相关依赖也卸载
sudo apt-get remove --auto-remove zipalign
# 把配置和数据也删除
sudo apt-get purge zipalign
# 把相关依赖、配置、数据卸载
sudo apt-get purge --auto-remove zipalign

发布

直接将final.apk(可以修改文件名)发布于服务器或第三方平台即可

参考1参考2参考3


Ionic+Angular 开发移动应用七:打包APK文件

本文原创自http://laker.me/blog,转载请注明出处,欢迎交换友链

如果本文对您有帮助,微信扫一扫,请我喝杯咖啡吧

评论组件不稳定,有事请联系V信 lakerHQ (请备注来自博客)