在前一章节里面,经过ionic run使app成功在手机上面跑起来,而且将android-debug.apk放到手机上后发现也能正常的安装,debug版本和release版本到底什么区别呢,这里就须要了解安卓的apk签名:为了保证每一个应用程序开发商合法ID,防止部分开放商可能经过使用相同的Package Name来混淆替换已经安装的程序,咱们须要对咱们发布的APK文件进行惟一签名,保证咱们每次发布的版本的一致性(如自动更新不会由于版本不一致而没法安装)。
若是使用没有统一签名的debug版本进行覆盖安装时将会报错,提示:应用未安装。android
进行签名的好处都有啥呢:安全
应用程序升级:若是你但愿用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是因为只有以同一个证书签名,系统才会容许安装升级的应用程序。若是你采用了不一样的证书,那么系统会要求你的应用程序采用不一样的包名称,在这种状况下至关于安装了一个全新的应用程序。若是想升级应用程序,签名证书要相同,包名称要相同!app
应用程序模块化:Android 系统能够容许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们做为一个单个的应用程序,此时就能够把咱们的应用程序以模块的方式进行部署,而用户能够独立的升级其中的一个模块ionic
代码或者数据共享:Android 提供了基于签名的权限机制,那么一个应用程序就能够为另外一个以相同证书签名的应用程序公开本身的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就能够在应用程序间以安全的方式共享代码和数据了。模块化
不一样的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程中,并且要让他们用相同的证书签名。工具
签名使用到的工具是Keytool:keytool 是个密钥和证书管理工具。它使用户可以管理本身的公钥/私钥对及相关证书,用于(经过数字签名)自我认证(用户向别的用户/服务认证本身)或数据完整性以及认证服务。它还容许用户储存他们的通讯对等者的公钥(以证书形式)
。
首先进入到工程目录后输入
$ keytool -genkey -v -keystore my-release-key.keystore -alias 你的应用名称 -keyalg RSA -keysize 2048 -validity 10000ui
成功生成签名文件spa
Releaese版本和Debug版本的区别:debug
debug签名的应用程序不能在AndroidMarket上架销售,它会强制你使用本身的签名;Debug模式下签名用的证书(默认是Eclipse/ADT和Ant编译)自从它建立之日起,1年后就会失效。code
debug.keystore在不一样的机器上所生成的可能都不同,就意味着若是你换了机器进行apk版本升级,那么将会出现上面那种程序不能覆盖安装的问题,至关于软件不具有升级功能!
使用命令ionic build android --release
进行release版本的发布。在apk目录下选中咱们须要的版本
输入命令:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore sangcan.apk sangcan
这里后面的sangcan.apk是咱们的目标apk版本,这里是我的习惯将前面的目标文件重命名为sangcan.apk。然后面的sangcan则是以前在生成签名时填写的应用名称。
签名成功后能够看到成功进行覆盖安装
到这里Release版本的APK成功发布。