Gradle,“找不到属性”

时间:2015-08-06 16:29:27

标签: android gradle

我试图寻找类似的问题,但是 没有运气。

我正在从命令行构建我的Gradle项目, 并在gradle release命令行中提供密码 使用-P。

这是我的build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.3'
    }
}

apply plugin: 'android'

android {
    signingConfigs {
        release {
             storeFile file("C:/Android/Dev/keystore/dm.keystore")
             keyAlias KEY_ALIAS
             storePassword STORE_PASSWORD
             keyPassword KEY_PASSWORD
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }

    compileSdkVersion 'android-13'
    buildToolsVersion '22.0.1'

    buildTypes {
        release {
            minifyEnabled false
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }
    }
}

当我尝试干净时,它给了我:

  

无法在SigningConfig_Decorated上找到属性“KEY_ALIAS”{name = release,storeFile = C:\ Android \ dev \ keystore \ dm.keystore,storePassword = null,keyAlias = null,keyPassword = null,storeType = C:\ Android \ dev的\密钥库\ dm.keystore}。

有人说'签名会'应该在之前 'buildTypes',确实如此。

有什么方法可以保留'signingConfigs' 在那里,但可能会以某种方式修改,而不是抱怨?

如果我将'signingConfigs'取出,并在我发布之前添加它 它有效。

谢谢!

1 个答案:

答案 0 :(得分:4)

试试这个

 def key="default"
def storePass="default"
def keyPass="default"

if (project.hasProperty("KEY_ALIAS")) {
    key = KEY_ALIAS
}
if (project.hasProperty("STORE_PASSWORD")) {
    storePass = STORE_PASSWORD
}
if (project.hasProperty("KEY_PASSWORD")) {
    keyPass = KEY_PASSWORD
}


signingConfigs {
    release {
        storeFile file("C:/Android/Dev/keystore/dm.keystore")
        keyAlias key
        storePassword storePass
        keyPassword keyPass
    }
}

我还建议您将签名信息存储在单独的文件中