AndroidStudio Apk签名及配置
一、简介:
AndroidManifest.xml文件中的 package可以认为是一个应用的唯一标识id ,在建立项目时输入的应用包名就是AndroidManifest.xml文件中的 package的值,因此应该取到和应用相关名字。这时候就涉及到了别人开发应用程序的包名问题,自己的能保证包名各不相同,但是别人如果和自己的包名一致了,客户在安装apk时就会出现问题,于是就产生了apk签名。
所有的Android应用程序都要求开发人员用一个证书进行数字签名,anroid系统不会安装没有进行签名的应用程序。平时我们的程序可以在模拟器上安装并运行,是因为在应用程序开发期间,由于是以Debug调试模式进行编译的,因此ADT根据会自动用默认的**和证书来进行签名,而在以发布模式编译时,apk文件就不会得到自动签名,这样就需要进行手工签名。
二、签名的意义
为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。
三、apk签名好处
-
应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序。如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,包名称要相同
-
应用程序模块化:Android系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块。
-
代码或者数据共享:Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。
四、具体步骤:
AndroidStudio可以同过以下方式进行签名
如果没有签名文件,则需要创建一个新的签名。点击Create new… 例:
填写完就会出现如下界面
这时候就会生成 签名后的APK 与 签名文件。
五、配置自动签名
当我们需要升级APK版本的时候,我们需要再次对APK文件进行签名,才能上传到应用市场。每次签名都需要重新输入密码与等待编译时间,这看起来比较麻烦。所以我们可以通过配置build.gradle让其自动生成签名后的APK。
具体操作:
点击OK,系统编译后,会出现如下代码
配置编译方式
编译后 会在build.gradle下自动生成
这时候你要运行的时候需要选择发布版运行
然后点击编译就行了
当然你如果想也给debug版配置签名信息,这时候你需要在build.gradle下配置如下信息:
这样也会自动生成签名后的APK文件。
六、自动签名安全性
如果你的项目是开源的,而你的签名信息都写在build.gradle,容易被人获取:
这时候你需要把这些签名信息写到 local.properties
而你需要在.gitignore配置加入如下信息。这样你的 local.properties就不会提交到开源项目中。
更改build.gradle的签名信息
这样就配置完成。
七、获取SHA1和MD5值
(1)第一种方式
点击androidStudio右边Gradle
双击signingReport
(2)第二种方式
注:签名配置就写到这,懂得不多。容易忘记,今天抽空做个笔记。资料查的并不多,可能有许多不足或错误,如果大伙发现还请告知。后续发现将继续填坑。