天天看點

擷取簽名的指紋資訊

一般我們在接入第三方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也具有了合作方需要的簽名指紋資訊。

繼續閱讀