转自https://wizardforcel.gitbooks.io/w3school-android/content/13.html
Android程序签名打包(release包)
本节引言:
第一章的倒数第二节,本节给大家介绍的是如何将我们的程序打包成Apk文件,并且为我们的Apk签名! 上一节中已经说了,我们后续的教程使用的IDE是Android Studio,所以本节讲解的也是AS(后面都这样 简称吧)下对项目进行打包签名!
1.什么是签名,有什么用:
Android APP都需要我们用一个证书对应用进行数字签名,不然的话是无法安装到Android手机上的,平时我们调试运行时到手机上时,是AS会自动用默认的密钥和证书来进行签名;但是我们十几发布编译时,则不会自动签名,这个时候我们就需要进行手动签名了! 为我们的APK签名有以下好处:
1.应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序。如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,包名称要相同!
2.应用程序模块化: Android系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块。
3.代码或者数据共享: Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。 不同的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程中,而且要让他们用相同的证书签名。 ————上述内容摘自:android 为什么需要签名
2.Android Studio如何打包签名:
好的,因为学习本课程的都是初学者,多渠道打包的内容以后再进行讲解!本节只讲最简单的打包签名 对了,1中说的调试时默认生成的apk在:app/build/outputs/apk目录下! 和Eclipse并不相同,Eclipse是在bin目录下生成的!
好的,打开我们的AS上的Hello World项目,点击菜单:
①Build -> Generate Signed APK...
②弹出窗口,如果没有key,就创建一个,有的话就选择存在的Key
③没有,我们新建一个,可根据自己需要填写相关项:
④好的,点击OK后,可以看到我们密码的信息,可能需要我们填入密码了,填写下:
⑤点击Next:
上面是我自己操作过程中的截图,下面增加了signature versions签名版本的选择
⑥点击Finish稍等一会儿会出现下述提示,说明应用已经打包签名成功了:
⑦可以看到打包后的APK已经安详地躺在我们的app目录下了:
⑧到第七步就已经打包签名完成了,如果你要验证是否签名,只需要输入下述cmd指令
/D/ASCode/FirstApp/app
$jarsigner -verbose -certs -verify app-release.apk
本节小结
打包Android APK的方法还有很多,命令行,或者Gradle,ANT,MAVEN等等,方法有很多,本节讲解最简单的通过图形化界面打包签名的方式!
一般测试的话打debug包,可以切换线上线下环境
1,Android Studio图形界面 点击run按钮,会自动生成的debug keystore签名,debug包会自动装到手机
2,生成debug apk文件,build--》build apk(s)可在/Users/wxd/Documents/project/Android/sportCloth/build/outputs/apk中生成debug包
gradle命令打release包
//这个是打包所有渠道release版本
./gradlew assembleRelease
//如果你只要打某个渠道的
./gradlew assembleBaiduRelease
1、打包后的apk文件在app–>build–>outputs—>apk中
2、使用gradlew时可能出现没有找到该命令,需要chmod 755 gradlew