------------------在网上找了很多资料,综合整理出了最完整的ionic打包上架。
APP开发完成后都需要做的就是打包上架,这里列举三种打包方法,着重讲解官网Android打包方式(结合android的打包)进行最详细的讲解。【学不会你可以打死我】
打包执行命令:(ionic其实可以省略,尾部可以加--save)
1、ionic cordova platform remove android (移除平台)
2、ionic cordova platform add android@6.2.2 (添加平台)【建议6.2.2 对应的是android-25 SDK】
3、ionic cordova build android --prod (测试版) android-debug.apk【默认是这个版本】 ionic cordova build android --prod --release(正式未签名版) 打包后出现 android-release-unsigned.apk
ionic cordova build android --prod --release(正式签名版) 打包后出现 android-release.apk【前提是创建了密钥 并配置了release.properties文件】
加完平台后包执行Android打包 完成后会显示: Building successful
IOS的打包上架可参考blog.csdn.net/liujiawei00/article/details/73822707。(这里不详细讲解)
使用webStorm工具打包签名APP www.jianshu.com/p/dfd98ad47af1 【本人没试过】
方法一:(未打包好,想直接打包签名的。)
打包前注意config.xml文件需要进行包名的更改(更改成唯一标识)【为打包签名后能正常安装到手机】
项目目录下执行:
1、先移除平台防止错误:ionic cordova platform remove android --save 【ionic 不要也行】(如果成功,以后直接打包覆盖平台即可)
2、再添加平台:ionic cordova platform add android@6.2.2 --save
3、再制作密钥(随便在哪制作):keytool -genkey -v -keystore lappfront.keystore -alias lappfront.keystore -keyalg RSA (-keysize 2048) -validity 20000
4、制作完生成的lappfront.store(我这里是lappfront) 移动到项目生成的platform >android目录下【和下面的release-signing.properties文件在同目录】
4、再platform >android文件夹下创建release-signing.properties文件(内容如下):
5、最后如下: 【打包正式的话就执行 ionic cordova build android --prod --release】【debug.apk的话如下图】
经过上面几步的操作,ionic打包签名APK:android-release.apk便已完成。
【最后就是优化APK,优化步骤下面有 (不优化也可以) 上线就行了】
方法二:要给未签名的apk重新签名,需要用到jarsigner工具:
1、已经执行了 ionic cordova build android --prod --release
打包成功的前提下出现:android-release-unsigned.apk【需要转成签名APK】
1)、创建密钥:同上 【这次在打包好的apk目录下执行】
2)、密钥弄好后,cd到项目的apk 目录 执行:【根据你要的app名称进行下面命令】
jarsigner -verbose -keystore my-release-key.keystore -storepass 123456 -signedjar lvshi.apk -digestalg SHA1 -sigalg MD5withRSA android-release-unsigned.apk alias_name 【这里要注意这些参数的意思,和密钥设置的匹配就行】
这里面,你的apk地址,要么是绝对地址,要么是你工程内的相对地址,如果地址不对,就会出现下面的错误【所以直接直接放一起,不然要找路径】
【结尾是jar 已签名,出现新的签名apk】
jarsigner是JDK自带的签名工具,我们需要将release版本的apk文件利用keystore文件进行加密,也就是签名,签名之后的apk才能发布到应用市场。
【项目apk的 目录下,创建密钥并签名如下】
一、keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
二、jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore HelloWorld-release-unsigned.apk alias_name【这里用下面MD5那种的签名】
SHA-1与MD5的比较:【都是摘要加密算法】
http://blog.csdn.net/lplj717/article/details/51828692【加密算法中BASE64、MD5、SHA、HMAC等之间的区别】
因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:
l对强行攻击的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2^128数量级的操作,而对SHA-1则是2^160数量级的操作。这样,SHA-1对强行攻击有更大的强度。
l 对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。
l 速度:在相同的硬件上,SHA-1的运行速度比MD5慢。
三、参考http://e2web.cn/2016/12/23/
这种打包完成后需要优化 【虽然你在build的时候--prod 了,但这里一样可以再优化】:
cd到下面目录(针对你apk的版本):
这里面apk的路径最好是绝对路径,要不然也会报错。
执行:zipalign -v 4 E:\my_project\lappfront\platforms\android\build\outputs\apk\lvshi.apk E:\my_project\lappfront\platforms\android\build\outputs\apk\lvshi_fabu.apk
【到此为止,你还剩下最后一步工作,如果想要真正的发布软件,你需要将之前生成的签名文件(.keystore)放到一个安全的地方,要不然你上传到商店后就无法对这个软件进行升级。】