Android Studio 在Gradle中隐藏Keystore密码

转载请注明原作者,如果你觉得这篇文章对你有帮助或启发,不用请我喝咖啡:D

1.添加releaseConfig

signingConfigs{
        releaseConfig{
            storeFile file("mykey.keystore.jks")
            storePassword "storepwd"
            keyAlias "MyApp"
            keyPassword "mypwd"

        }
    }

2.指向releaseConfig

在buildTypes中,release部分,添加sighingConfig 指向releaseConfig

buildTypes {
        release {
            minifyEnabled false
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.releaseConfig
        }
    }

3. 隐藏密码

不想暴露密码,修改步骤1中的storePassword和keyPassword为

signingConfigs{
        releaseConfig{
            storeFile file("hnt.keystore.jks")
            storePassword System.console().readLine("\nKeyStore password: ")
            keyAlias "HaniuTang"
            keyPassword System.console().readLine("\nKey password: ")

        }
    }

这样使用命令行进行打包(assembleRelease命令)会让你输入密码。

4.遇到的问题及解决

设置apk签名时从console中读取keyAlias以及密码,使用”system.console().readLine”方法,在编译时总是出现问题:

Cannot invoke method readLine() on null object"

使用命令行的时候没有问题,但是当使用android studio的时候,还是报这个错,可能是android studio默认设置gradle为deamon方式。

  • 方法1:去除优化gradle设置的./gradle/gradle.properties中的damon为true。

Reference:
http://forums.gradle.org/gradle/topics/standard_in_when_using_the_daemon

  • 方法2:加上
if(system.console() != null)

这之后再从命令行读取密码以及别名

Reference:
https://www.timroes.de/2013/09/22/handling-signing-configs-with-gradle/

5.最终脚本

最终,gradle脚本中的相关部分长这样:

signingConfigs{
        releaseConfig{
            storeFile file("mykey.keystore.jks")
            storePassword
            if(System.console() != null)
                System.console().readLine("\nKeystore password: ")
            keyAlias "MyApp"
            keyPassword
            if(System.console() != null)
                System.console().readLine("\nKey password: ")
        }
    }
    原文作者:GingerBot
    原文地址: https://www.jianshu.com/p/714ea34f739a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞