隱式配置 KeyStore 簽名信息
阿新 • • 發佈:2019-01-28
LZ-Says:技術的魅力,非幾句言語可表述~ 需要細細品味~!
前言
還記得,在某司對接支付,Enmmm,微信支付的時候,申請時提交的是正式證書的資訊,所以想測試,只能使用正式簽名才可以。
問題 LZ 只是想玩玩,又不是提交測試。腫麼破?
最後想想,直接指定簽署 Debug Apk 時使用正式簽名不就好了,小手一點執行,簡直6的不要不要的。
debug {
try {
storeFile file("keystore address")
storePassword "your password"
keyAlias "your alias"
keyPassword "your key password"
} catch (ex) {
throw new InvalidUserDataException(ex.toString())
}
}
Enmmm,雖然最後也發現了還可以修改證書,下面附上地址連結:
Enmmm,還以為以後就這樣咯,結果今天看到官方,不免得為當初 Low 的舉動腹黑一波~
開車
這裡,引用一波官方的說明:
在建立簽名檔案時,Android Studio 會以純文字形式將簽名信息新增到模組的 build.gradle 檔案中。如果是團隊協作開發或者將程式碼開源,那麼應當將此敏感資訊從構建檔案中移出,以免被其他人輕易獲取。為此,我們應建立一個單獨的屬性檔案來儲存安全資訊並按以下步驟操作,在我們的構建檔案中引用該檔案。
具體操作步驟如下:
Step 1: 在專案的根目錄下建立一個名為 keystore.properties 的檔案。此檔案應當包含簽名信息,如下所示:
storePassword = yourStorePassword
keyPassword = yourkeyPassword
keyAlias = yourKeyAlias
storeFile = yourStoreFileLocation
Step 2: 在模組的 build.gradle 檔案中,於 android {} 塊的前面新增用於載入 keystore.properties 檔案的程式碼,隨後修改配置中的引用即可。
// 建立一個名為keystorePropertiesFile的變數,並將其初始化為rootProject資料夾中的keystore.properties檔案。
def keystorePropertiesFile = rootProject.file("keystore.properties" )
// 初始化一個名為keystoreProperties的新Properties()物件
def keystoreProperties = new Properties()
// 將keystore.properties檔案載入到keystoreProperties物件中
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
...
// 簽名配置
signingConfigs {
config{
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias'] // 這塊也可以使用:keystoreProperties.getProperty()
keyPassword keystoreProperties['keyPassword']
}
}
buildTypes {
release {
minifyEnabled false
signingConfig signingConfigs.config
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
minifyEnabled false
signingConfig signingConfigs.config
}
}
...
}
Enmmm,最後點選 Build > Build APK 以構建釋出 APK ,並確認 Android Studio 已在模組的 build/outputs/apk/ 目錄中建立一個簽署的 APK。
感受
還是要多看看官方文件,真的是能學習不少東西。
別人搞得在6,終究是別人的。
參考資料
個人公眾號
不定期釋出博文,感謝大家關注~