利用ionic2制作好的app,我们得通过打包后才能发布出去,不然的话app是无法通过验证的。在打包过程中,我们就得需要java的keytool进行生成证书,然后通过生成的证书,我们再将其导入到我们得app里面来实现一个签名。
进入ionic项目根目录
比如我的是h:/Ionic/flashlight
cd h:/Ionic/flashlight
使用keytool生成证书
1 | keytool -genkey -v -keystore key.keystore -alias you_name -keyalg RSA -keysize 2048 -validity 10000 |
首先会让你输入密码,如果你使用过linux或者mac的话,你就会知道,这里输入密码是不可见的(菜鸟们不要以为这是bug)。
其中key.keystore是证书的名称和后缀名,key则可以修改成你需要的名称,而后缀名不能随意更改,否则会出错。
you_name则为证书拥有者的名称,你可以自己起一个。
如果可以出现什么问题的话,你可以看到如下的设置:
这些设置,自己随便乱填下吧!感觉没有什么用处
现在你就可以在根目录下看见一个key.keystore的证书了。有了这个证书,那么我们现在可以开始打包app了。
打包app
使用以下命令生成apk文件到platforms/android/build/outputs/apk
这里我们生成的apk的名称是android-release-unsigned.apk(自动默认的名称)
1 | ionic build android --release --prod --device |
为apk签名
1 | jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore H:/Ionic/flashlight/platforms/android/build/outputs/apk/android-release-unsigned.apk you_name |
命令执行后会让你输入你之前设置的密码
注意:apk路径请使用绝对路径,这样就不会发生任何错误了,看到you_name了吗?请修改成你证书的用户名。
如果不出什么状况的话,你会看到如下图:
到此,apk签名完成了。
apk优化
不过根据android官方所说,我们还得对此apk进行优化,优化则是使用Android SDK中zipalign进行优化。这个应用可以在Android SDK目录下找到,比如我的目录如下(在build-tools目录下,随便打开一个文件夹即可看到zipalign):
因此,我们需要cd到当前的zipalign目录,来执行相关命令。
1 | cd E:\Android\sdk\build-tools\22.0.1 |
再次输入如下命令
1 | zipalign -v 4 H:/Ionic/flashlight/platforms/android/build/outputs/apk/android-release-unsigned.apk flashlight.apk |
你会看到有两个apk名称的文件,第一个apk文件是你要优化的apk目录(必须绝对路径),第二个则是优化后生成的apk文件,这里我直接放到当前目录,因此没有填写路径,你可以尝试自己添加其他路径。
到此APK打包和优化,终于完工了!