Android应用在Debug模式下ADT会自动用默认的密钥和证书来进行签名,但是在发布的时候就需要一个手动配置。
生成签名的方法见我的上一篇文章:生成Java签名.keystore文件的方法
为Android应用配置签名
代码添加
在Android应用的build.gradle文件的android中添加如下代码
|
|
其中keyAlias对应签名中的别名,keyPassword对应别名密码,storeFile是签名的文件路径,storePassword是签名的密码。
可视化添加
通过快捷键Command+;
,或者是File->Project Structure
打开Project Structure对话框,然后选择Signing
标签,然后在其中我们可以添加签名。
通过途中红框标出的加号添加一个签名,在右侧填写信息即可,之后点击OK。这种方法,Android Studio会自动为我们添加上面的代码。
使用签名
签名是要在打包的时候使用。打包一般用debug包和release包,因为我们的签名是为debug准备的,那么下来我演示打debug包时怎么使用。
还是在build.gradle的android中添加如下代码
|
|
这样我们在打debug包的时候就会带上这个签名了。
为什么Android应用需要签名
这里我在网上找了一些资料总结了一下,这个理解一下就可以了。
- 应用程序升级——当你对应用程序进行升级时,如果你想用户平稳的升级,那么,你就需要签上相同的证书。当系统安装一个升级应用程序时,如果新版本的证书与老版本的证书有匹配的话,那么,系统才会允许进行升级。如果你没有为版本签上合适的证书,当你安装时,你需要给应用程序指定一个新的包名——在这种情况下,用户安装的新版本,被当作是一个全新的应用程序。
- 应用程序模块化——如果应用程序请求的话,Android系统允许签有相同证书的应用程序运行在相同的进程里,这样,系统就会把它们看作是一个单一的应用程序。用这种方法配置应用程序,用户可以选择更新每个独立的模块。
- 代码/数据权限共享——Android系统提供了基于签名的权限检查,因此,如果应用程序间签有特定的证书,那么,它们之间可以共享功能。通过多个程序签有相同的证书并且使用基于签名的权限检查,你的程序可以以一种安全的方式共享代码和数据。还有一个决定签名策略的重要因素是:如何设定key的有效期。
- 发送者的身份认证,由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,以此保证签名不同的包不被替换
- 保证信息传输的完整性,签名对于包中的每个文件进行处理,以此确保包中内容不被替换。
- 防止交易中的抵赖发生, 市场对软件的要求
Android中使用签名的相关知识请参考以下文章: