gradle中隱藏Keystore密碼

該博客是對gradle整理匯總這篇文章的補充

1、一般寫法

通常簽名的配置方法為:

android {
    signingConfigs {
        config_release {
            keyAlias 'releaseKey'
            keyPassword '123456'
            storePassword '123456'
            storeFile file('key/releaseKey.jks')
        }
    }
}

2、改良寫法:

把簽名信息(主要是密碼)寫在gradle中是不安全的,我們可以把這些簽名信息添加到gradle.properties:

RELEASE_KEY_PASSWORD = 123456
RELEASE_KEY_ALIAS = releaseKey
RELEASE_STORE_PASSWORD = 123456
RELEASE_STORE_FILE = key/releaseKey.jks

然后在build.gradle中引用即可:

android {
    signingConfigs {
        config_release {
            storeFile file(RELEASE_STORE_FILE)
            keyAlias RELEASE_KEY_ALIAS
            storePassword RELEASE_KEY_PASSWORD
            keyPassword RELEASE_STORE_PASSWORD
        }
    }
}

我們也可以將簽名信息添加到local.properties中,然后在build.gradle中讀取.

3、更安全寫法:

簽名密碼的私密性是最關(guān)鍵的,所以我們要是能把它改成每次打包時手動輸入密碼才是最安全的:

android {
    signingConfigs {
        config_release {
            storeFile file(RELEASE_STORE_FILE)
            keyAlias RELEASE_KEY_ALIAS
            storePassword System.console().readLine("\\\\nKeystore password:")
            keyPassword System.console().readLine("\\\\nKey password:")
        }
    }
}

這樣在執(zhí)行 打包命令時,就會被要求輸入密碼.

4、遇到的問題及解決

問題描述:
設(shè)置apk簽名時從console中讀取keyAlias以及密碼,使用”system.console().readLine”方法,在編譯時總是出現(xiàn)問題:

使用命令行編譯的時候沒有問題,但是當(dāng)使用Android studio命令編譯的時候,會報這個錯.

解決方法:

步驟1:去除優(yōu)化gradle設(shè)置的./gradle/gradle.properties中設(shè)置damon為true的這行語句:

org.gradle.daemon=true

步驟2:加上判斷console是否為空的語句:

if (System.console() != null)

這之后再從命令行執(zhí)行,讀取手動輸入的密碼.

#5、最終腳本

最終,gradle腳本中的相關(guān)部分長這樣:

android {
    signingConfigs {
        config_release {
            storeFile file(RELEASE_STORE_FILE)
            keyAlias RELEASE_KEY_ALIAS
            def sPassword = null
            def kPassword = null
            if (System.console() != null)
                sPassword = System.console().readLine("\\\\nEnter store password ")
            if (System.console() != null)
                kPassword = System.console().readLine("\\\\nEnter key password ")
            keyPassword kPassword
            storePassword sPassword
        }
    }
}

ps:此種用法在命令行中執(zhí)行沒問題,但是用gradle自帶命令執(zhí)行報錯,提示找不到keyPassword,這也是我之前推薦大家使用命令行編譯、打包的原因!

至此,文章結(jié)束,希望此文能幫助到你,如果對此文有不同見解,歡迎直接評論!

參考文案:
Android 使用Android Studio + Gradle 或 命令行 進行apk簽名打包
Android Studio 在Gradle中隱藏Keystore密碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容