使用Android Studio進行簽名及使用gradle配置簽名
一、Debug模式下的簽名
執行或從IDE除錯專案時,Android的Studio會自動由Android SDK工具生成的除錯證書籤名的APK。您執行或除錯Android Studio中的專案第一次,IDE會自動在除錯金鑰庫和證書 $HOME/.android/debug.keystore,並設定金鑰庫和金鑰的密碼。
因為Debug模式下的證書由構建工具建立,這樣是不安全的,大部分應用程式商店(包括谷歌Play商店)不會接受的APK有出版除錯證書籤名。
所以你不用每次除錯時都輸入的Android Studio自動儲存在簽約配置除錯簽約資訊。簽名的配置是由所有必要的資訊,以簽署APK,包括金鑰儲存位置,儲存密碼,金鑰名稱,金鑰密碼的物件。您不能直接編輯除錯簽約配置,但可以配置你如何簽上你的釋出版本。
二、利用Android Studio進行簽名
1. 在選單欄中,Build > Generate Signed APK
2. 選擇您想從下拉釋放下來,然後單擊模組 下一步。
3. 如果你已經有一個金鑰庫,請轉到步驟5.如果你想建立一個新的金鑰庫,單擊 新建。
4. 在新的金鑰庫視窗,為您提供金鑰庫和金鑰以下資訊,如圖1所示。
圖1。建立Android Studio中一個新的金鑰庫。
Keystore
- Key store path::選擇您的金鑰儲存應該建立的位置。
- Password:建立並確認您的金鑰庫安全的密碼。
Key
- Alias:你的Enter鍵的標識名稱。
- Password: 建立並確認你的金鑰的安全密碼。這應該是從你選擇你的金鑰庫的密碼不同
- Validity (years):設定的時間長度在幾年,你的key將是有效的。你的key應該是有效期至少為25年來,這樣你就可以通過你的應用程式的壽命相同的金鑰簽名的應用程式更新。
- Certificate:輸入有關自己的一些資訊,為您的證書。這個資訊是不是在你的應用程式中顯示,但是屬於apk的一部分。
填完上面資訊,然後單擊確定。
在生成簽名APK視窗中,選擇一個金鑰庫,私鑰,並輸入密碼兩種。(如果在上一步中建立您的金鑰庫,這些欄位已經為您填充。)然後單擊 下一步。
圖2。選擇Android Studio中的私鑰。
在下一個視窗中,選擇簽署的apk的輸出目錄,和簽名的環境,然後單擊 Finish(完成)。
圖3。生成所選Flavors的APK。
該過程完成後,你會發現在你上面選擇的目標資料夾已經有簽名的APK。您現在可以通過一個應用市場,如谷歌Play商店,或使用你選擇的機制分發簽署的APK。
三、配置build.gradle檔案自動簽名你的apk
在Android Studio中,你可以通過build.gradle 配置來構建你的專案,在構建的過程中會自動生成你的apk。步驟如下:
- 在當前你的專案,右鍵點選你的程式,然後開啟Projec Structure,
- 再開啟的視窗中,在模組的左側面板中選擇你想簽署的Module。
- 選擇你的密碼儲存檔案,然後輸入相關的資訊;如圖:
圖4。用於建立新簽名構造的視窗。 - 點選Ok。
- 然後在build types配置中 選擇剛剛簽名的配置。如圖:
最後點選ok。
然後AndroidStudio 自動構建編譯,成功後可以在build/outputs/apk/為您構建模組專案目錄內的資料夾中找到我們輸出的apk。
四、團隊使用問題
1.建立一個檔名 為keystore.properties在專案的根目錄。
storePassword = myStorePassword
keyPassword = mykeyPassword
keyAlias = 別名
storeFile = 簽名檔案路徑
2.在你的模組的build.gradle檔案中,新增的程式碼載入你keystore.properties的檔案。
def keystorePropertiesFile = rootProject.file("keystore.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
...
}
3.你可以使用語法,來引用儲存的簽名信息。
android {
signingConfigs {
config {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
...
}