天天看点

获取签名的指纹信息

一般我们在接入第三方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也具有了合作方需要的签名指纹信息。

继续阅读