应用签名
为了确保应用在Android手机安装的唯一性,所以需要对App进行签名;签名之前我们需要明确一个概念:在开发App的时候,不论是在真机还是模拟器上调试,都需要安装一个app_debug.apk,这个debug的apk也是有签名的,但是这个签名是可变的,也是不可控的(不同IDE生成的debug.apk的应用签名不同);所以我们如果要发布App的时候,debug版本是绝对不行的;
正式签名的步骤如下:(Android Studio)
- Build-->Generate Signed APK
- 如果你以前发布过该应用,则应该有一个.jks的Key Store,选择这个文件然后输入你当时设置的Key store password, Key alias, Key password值,点击next即可;
- 如果你没有Key Store(.jks文件),则需要Create New..;输入你的信息(如下),就可新建一个Key Store;(一定保管好这个Key Store)
- 此时生成的app_realease.apk,就是经过签名的正式版apk了;
Debug使用正式签名
如果你的项目中调用过微信,那么你一定骂过微信开发者文档。其他的不多说,其中有一个坑就在应用签名上;在申请应用接入微信的AppID和AppSecret的时候需要填写你的App的应用签名和包名;
App的应用签名可以通过微信提供的签名生成工具获取;
其实应用签名就是一个MD5值,类似于:“4c77a8fdf6168705831c55abe3a489b4”这样的值;这个MD5值是根据我们上文填写信息生成的.jks文件和包名通过Hash运算出来的;
那么问题就来了,上文说过,Debug的时候应用签名是随机生成的,但是应用在接入微信调试过程中,在Debug版本中也需要对应用进行正式的签名,如果没有正式签名,微信接入一定不成功!
(这确实是一个坑,当年做微信接入的时候,没有任何资料和博客告诉我这里的应用签名的问题!!!debug时候使用release版本的签名导致微信一直无法调用。。。)
其实这个问题很好解决:debug的时候直接使用.jks签名就好了,只需要在build.gradle中简单设置一下即可:
signingConfigs {
release {
//确保我们生成的SampleDemo.jks与build.gradle在同一目录下
storeFile file("SampleDemo.jks")
// 这些需要明文写在这里
storePassword "123456"
keyAlias "Demo"
keyPassword "123456"
}
}
buildTypes {
// Debug 版本使用正式签名
debug {
signingConfig signingConfigs.release
}
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
作者:Torang
链接:http://www.jianshu.com/p/8b0483510bf9
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。