使用属性文件Gradle Android Studio签名

Ada*_*dam 6 android build gradle android-studio

我正在尝试使用gradle构建文件来签署我的应用程序.当我使用普通的signedConfigs时,它可以工作(signingConfigs.release)!但如果我试图从属性文件中读取属性,它将无法工作.(signingConfigs.config)

Properties props = new Properties();
props.load(new FileInputStream(file(rootProject.file("signing.properties"))))

android {
        signingConfigs {
            config {
                storeFile file(props["storeFile"])
                storePassword props["storePassword"]
                keyAlias props["keyAlias"]
                keyPassword props["KeyPassword"]
            }
            release {
                storeFile file("..\\xyz.jks")
                storePassword "****"
                keyAlias "****"
                keyPassword "****"
            }
        } 
    .
    .
    .
        buildTypes {
            release {
                runProguard false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
                signingConfig signingConfigs.release
            }
            debug {
                applicationIdSuffix '.debug'
                versionNameSuffix '-SNAPSHOT'
            }
        }
Run Code Online (Sandbox Code Playgroud)

属性文件:

storeFile=xyz.jks
storePassword=xyz
keyAlias=xyz
keyPassword=xyz
Run Code Online (Sandbox Code Playgroud)

当我运行该项目时,android工作室会显示一个对话框,其中显示:

xyz.apk未签名.请使用"项目结构"对话框配置所选flavor的签名信息.

正确读取属性文件,因为我可以从文件中记录一些属性抛出控制台.

我的一些系统细节:

Android Studio 0.8.6 Windows 8.1 x64 gradle 1.12

希望有人能帮助我.如果你想了解更多细节,请问我.

ari*_*ets 13

这就是我的工作,它对我有用:

signingConfigs {
    release {
        def Properties localProps = new Properties()
        localProps.load(new FileInputStream(file('../local.properties')))
        def Properties keyProps = new Properties()
        assert localProps['keystore.props.file'];
        keyProps.load(new FileInputStream(file(localProps['keystore.props.file'])))
        storeFile file(keyProps["store"])
        keyAlias keyProps["alias"]
        storePassword keyProps["storePass"]
        keyPassword keyProps["pass"]
    }
}
Run Code Online (Sandbox Code Playgroud)

我的local.properties文件包含"keystore.properties"文件的路径.那包含我关于密钥库的信息:

store=***
alias=***
pass=***
storePass=***
Run Code Online (Sandbox Code Playgroud)

也许加载两个Propreties文件是多余的,但它确实对我有用.