“签名配置应该在Gradle构建脚本中指定”......我做到了

时间:2013-10-07 18:19:15

标签: android gradle signing android-gradle

当我来签署我的应用程序时,我遇到了一个大问题:我已根据文档设置了签名配置:

signingConfigs {
    release {
        storeFile file("lomapnew.keystore")
        storePassword "myPassword"
        keyAlias "myAlias"
        keyPassword "Something...."
    }
}

但我仍然收到此错误消息:“应在Gradle构建脚本中指定签名配置”

enter image description here

3 个答案:

答案 0 :(得分:21)

我想出一个问题,猜测你没有为发布版本类型设置签名配置。调试构建类型是自动的,因此对于所有其他构建类型(包括发布)来说,这是不必要的步骤。

您可以像这样应用签名配置:

android {
    signingConfigs {
        // It's not necessary to specify, but I like to keep the debug keystore
        // in SCM so all our debug builds (on all workstations) use the same
        // key for convenience
        debug {
            storeFile file("debug.keystore")
        }
        release {
            storeFile file("release.keystore")
            storePassword "myPassword"
            keyAlias "myAlias"
            keyPassword "Something...."
        }
    }

    buildTypes {
        /* This one happens automatically
        debug {
            signingConfig signingConfigs.debug
        }
        */
        release {
            signingConfig signingConfigs.release
        }
    }
}

答案 1 :(得分:1)

我喜欢将密码保存在我的构建文件中。因此,我创建了一个我用

加载的属性文件
def keystorePropertiesFile = rootProject.file("./local.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

然后我像这样定义了signedConfigs:

   signingConfigs {
    releaseSigning {
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['keystore.live.storepassword']
        keyAlias = keystoreProperties['keystore.live.keyalias']
        keyPassword = keystoreProperties['keystore.live.keypassword']
    }
    debugSigning {
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['keystore.debug.storepassword']
        keyAlias = keystoreProperties['keystore.debug.keyalias']
        keyPassword = keystoreProperties['keystore.debug.keypassword']
    }
}

这对菜单选项“create Signed apk”不起作用,所以我创建了风味:

    productFlavors {
    mydebug {
        signingConfig signingConfigs.debugSigning
    }
    myrelease {
        signingConfig signingConfigs.releaseSigning
    }
}

现在,signconfigs与工具栏上的运行按钮一起使用。对于默认密钥库,local.properties看起来像

ndk.dir=/opt/sdk/ndk-bundle
sdk.dir=/opt/sdk
storeFile=/home/christine/.android/debug.keystore
keystore.debug.storepasswd=android
keystore.debug.keyalias=androiddebugkey
keystore.debug.keypassword=android
keystore.live.storepasswd=android
keystore.live.keyalias=androiddebugkey
keystore.livetest.keypassword=android

在Jenkins构建脚本中,您需要创建一个从local.properties到构建服务器上属性文件所在的符号链接。

答案 2 :(得分:0)

已经给出了答案,但我想强调其他方法, 我们可以手动指定信息,如下所示,我们必须指定我们的密钥库位置的完整路径,如下所示

signingConfigs {
    release {
        storeFile file('O:/Android/Projects/yourKeyStore.jks')
        storePassword "qwerty"
        keyAlias "yourProjectKeyAlias"
        keyPassword "ProjectKeyPassword"
    }
}

如果您进入

,也可以在签名报告中指定

文件 - >项目结构

选择您的项目应用程序模块并选择可以填写信息的签名报告,它将自动在gradle文件中添加以前的版本信息。

最后你只需要添加

signingConfig android.signingConfigs.release

在buildTypes {...}部分中。这将完成签署程序。