参考资料:http://www.cnblogs.com/ok-lanyan/archive/2013/04/02/2995462.html
一、为什么要签名
在平时开发中,我们以debug模式编译程序时,编译会自动的为我们的apk添加上默认签名。当当我们发布一个应用时(Release版本时),编译器不会为我们添加默认的签名,这时需要我们自己为APK添加签名。
签名的好处:
- 发送者的身份认证
由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,以此保证签名不同的包不被替换
- 保证信息传输的完整性
签名对于包中的每个文件进行处理,以此确保包中内容不被替换
- 应用程序模块化:
Android 系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块
- 系统要求安装的程序必须签名:
所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序
二、Java数字证书
详细的资料:http://blog.csdn.net/mingde_he/article/details/5694274
Java中的keytool.exe可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。
三、如何给apk签名
1.创建keystore
使用Generate Signed APK创建自己的keystore
2.create new或者choose exiting
选择已经有的keystore或者创建新的
3.创建新的keystore
注意 最后的扩展名为.jks
四、签名打包
将已经生成的jks加入到项目的目录结构中
配置签名
方式1:在gradle中进行配置签名(注意这种方式不保险)
方式二:通过ProjectStructure 进行配置
选中moudel层中的一个工程 打开 signing 添加config
![Uploading Paste_Image_769156.png . . .]
打包签名###
gradle assembleRelease 或者 assembleDebug
将账户密码写在gradle.properties
摘抄自:https://github.com/futurice/android-best-practices