一般我们在接入第三方sdk的途中,有些sdk需要我们给出自己应用的签名的指纹信息,所谓的指纹信息就是签名中的SHA1.
首先我们需要得到keystore文件
然后使用如下命令查看文件指纹信息:
keytool -list -keystore debug.keystore
回车之后可能会让输入密码,一般密码就是android
这里的keytool是jdk中的指令,配置了jdk环境变量就能使用。
如上面所示,我们获取的是debug下的签名信息。一般我们在开发过程中,Android studio编译出来的apk的默认签名就是debug.keystore,该签名文件存在与硬盘的.android目录下,该目录是在系统的用户目录下的,比如我的ubuntu系统的/home/xxx/.android, xxx是我的当前账户。
参考:Android Studio中如何获取sha1证书指纹数据debug.keystore
以上是我们不需要获取或是修改指纹时,默认使用Android提供的签名信息(这个签名信息每个机子用户都不一样,所以即便大家都是用的默认签名debug apk,最终apk还是不能覆盖安装(关于签名和覆盖安装的问题可以查看这里))。
如开头所说,我们接入的sdk需要我们的指纹信息,那么我们肯定会给对方一个唯一的固定的签名了,那么就用到了release.keystore签名(其实这个签名和debug没啥区别)。一般我们在新项目建立的时候新创建一个release签名,以后应用就一直使用这个签名,新建立的这个签名可以使用上面提到的keytool方法获得SHA1指纹信息,把这个指纹信息告知合作方。以后我们release之后的apk就能正常使用合作方的sdk。
既然合作方sdk需要用到指纹信息,那么我们在debug的时候是不是也要使用release签名,这样才能正常的使用sdk的功能。
所以我们需要在studio中配置一下。
在我们项目的module 的根目录下创建一个keystore文件夹,把我们的签名文件放进去:
在该module的gradle中的android节点下添加:
signingConfigs {
debug {
keyAlias 'androiddebugkey'
keyPassword 'android'
storeFile file('keystore/debug.keystore')
storePassword 'android'
}
}
然后在buildtype中引入我们的配置:
buildTypes {
release {
debuggable false
minifyEnabled true
shrinkResources true // 尽量开启shrinkResources: 打包时移除掉未使用到的资源或代码
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
debug {
debuggable true
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
}
这样我们在debug下编译的apk也具有了合作方需要的签名指纹信息。