2013/07/17

Ask password when release using gradle

總算移轉到 Gradle 來, 但卻出現一個 release sign 的問題.
之前使用 ant 在 sign release 會跳出提示來問密碼, 但是 gradle 卻不知該怎麼做.
Google 一番, 找到以下連結.
assemblerelease-task-dependency-ask-for-keystore-password

但這卻有一個問題, 雖然會提示輸入密碼, 但是最後出來的 apk 一樣沒有 sign.

以下是我的解決方法:
task('readPasswordFromInput') << {
def console = System.console()

ext.keystorePassword = console.readLine('\n\n\n> Enter keystore password: ')

android.signingConfigs.release.storePassword = ext.keystorePassword
android.signingConfigs.release.keyPassword = ext.keystorePassword
}

tasks.whenTaskAdded { task ->
if (task.name.matches("validateReleaseSigning")) {
task.dependsOn('readPasswordFromInput')
}
}

另外在 build type release 那邊加上以下
    signingConfigs {
debug {
storeFile file("my-debug-key.keystore")
}

release {
storeFile file("my-release-key.keystore")
storePassword ""
keyAlias "release_key"
keyPassword ""
}
}

這樣當 release 時就可以輸入密碼也成功的 sign 了.