前言:如果想要在 Google Play 發布 APP ,需要有 jks 金鑰的 APK,那麼接下來我們將介紹如何生成具有 jks 金鑰的APK檔。
一、生成 jks 金鑰
1.點選 Android Studio 上方選單的 Build / Generate Signed APK 。
2.這邊可以依個人情況選擇,Android App Bundle是Android的新的官方發布格式,或者是單純在自己的裝置安裝 APK 所使用的格式。
3.生成 Key Store 檔案,因為是第一次生成,所以點「Create New…」,如果有生成過,之後會自動導入。
這裡要注意的地方是,之後都要用這次產生的 Key Store 才能更新 APP ,如果使用不同的 Key Store ,會被認定為不同的 APK 而無法更新。
4.輸入生成 Key Store 的需要的資料:
Key store path: 選擇要儲存的檔案位置,之後記得備份這個檔案
Password: Confirm: 設定存取這個檔案的密碼
Key Alias: 金鑰的別名,使用APP的名稱即可
Password: Confirm: 設定金鑰的密碼
Validity years: 有效期限,用預設的25年即可
Certificate: 証書的資料,只要設定 First and Last Name 即可,其他選填
5.生成完 Key Store 後,輸入剛才設定的 Key store password 跟 Key password 就可以按下 Next 開始下一步
6.Build Variants的 debug 是指測試用的簽名, release 則是以後要正式上線的簽名,這裡依個人情況選擇, Signature Versions 的 V1 與 V2 ,一定要勾選,否則安裝 apk 的時候,會出現未安裝應用程式的錯誤,勾選完後,點選 Finish ,就會生成 jks 檔。
雖然這時已經生成 jks 檔案了,但是還需要在 Android 專案裡導入 jks 金鑰才能讓 本地 APP 具有 jks 金鑰;需要在 Android 專案的 Gradle Scripts / build.gradle (Module:app) 裡設定。
二、導入 jks 金鑰
1.由於不能將 KeyStore 的密碼大剌剌的寫在 Gradle Script 裡頭,所以我們需要對這些資訊更加小心的處理才行,為了避免洩露敏感資訊,要在此 Android 專案的根目錄建立一個 keystore.properties 檔案。
2.在 keystore.properties 輸入第一部分第4點輸入的 KEYSTORE_PASSWORD 、 KEYSTORE_ALIAS、 KEYSTORE_ALIAS_PASSWORD
3.再來就可以到 Gradle Scripts / build.gradle (Module:app) 進行 jks 金鑰的設定了,首先,先修改一下版本編號 , 找到以下這兩行, versionCode 只能用整數,下次更新時再加1即可, versionName 是給使用者看的字串,可以用像是 1.0、1.1、2.3.4 這樣的版本號。
4.接下來在 Gradle Script 裡頭加入與 Signing 相關設定。好讓 Gradle 在 Build 時知道該填入什麼,該從哪處得到 key。
我們可以在 app module 裡頭為它的 Gradle Script 加入 Signing Configs 設定,這個設定要加在 android 這個 scope 裡, storeFile 表示讀檔,然後填下 KeyStore 的路徑。
再來就是 buildTypes 的設定,依據剛才第一部分第6點的選擇,填下 release 或是 debug 其一即可。
android {
signingConfigs {
sign {
storeFile file("Your KeyStore Path")
sign
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.sign
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.sign
}
}
//以下省略其他程式碼
...
}
5.接下來就要讓此專案取得 keystore.properties 裡頭的變數,一樣在 Gradle Scripts / build.gradle (Module:app) 裡進行設定。
//rootProject.file(): 取得根目錄中的檔案
def ksFile = rootProject.file('keystore.properties')
def props = new Properties()
if (ksFile.canRead()) {
props.load(new FileInputStream(ksFile))
if (props != null) {
android.signingConfigs.sign.storePassword props['KEYSTORE_PASSWORD']
android.signingConfigs.sign.keyAlias props['KEYSTORE_ALIAS']
android.signingConfigs.sign.keyPassword props['KEYSTORE_ALIAS_PASSWORD']
} else {
println 'some entries in \'keystore.properties\' not found!'
}
} else {
println '\'keystore.properties\' not found!'
}
6.點選左下角的 build Variants ,依據剛才第二部分第4點的選擇,選擇要用 debug 或是 release 。
7.接下來點選 Gradle 後,再點選 signingReport ,如果下方的的訊息沒有顯示錯誤,以及有出現 key Store 的訊息,及代表有成功導入 jks 金鑰。
8.最後點選 Android Studio 上方選單的 Build/Build Bundle(s)/APK(s) 的 Build APK(s) ,開始打包 APK 。
9.打包完成後,點選 locate 即可開啟 APK 所在的資料夾。
參考資料:
https://www.itread01.com/p/1369640.html