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