13

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

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

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

在此处输入图像描述

4

3 回答 3

25

我要冒昧地猜测您还没有为发布构建类型设置签名配置。调试构建类型是自动的,因此对于所有其他构建类型(包括发布)来说,这并不明显是必要的步骤。

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

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
        }
    }
}
于 2013-10-07T19:45:38.323 回答
3

我喜欢在我的构建文件中保留密码。因此我创建了一个我加载的属性文件

def keystorePropertiesFile = rootProject.file("./local.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

然后我像这样定义signingConfigs:

   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']
    }
}

这不适用于菜单选项“创建签名的 apk”,因此我创建了风味:

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

现在签名配置与工具栏上的运行按钮一起使用。对于默认密钥库,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 到属性文件在构建服务器上的位置的符号链接。

于 2018-02-13T16:32:38.230 回答
0

答案已经给出,但我也想强调其他方式,我们可以像下面这样手动指定信息,我们必须像这样指定密钥库位置的完整路径

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

如果您进入,这也可以在签名报告中指定

文件-->项目结构

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

最后你只需要添加

signingConfig android.signingConfigs.release

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

于 2016-03-30T19:44:10.457 回答