Gradle build:找不到参数的方法signingConfig()

Posted

技术标签:

【中文标题】Gradle build:找不到参数的方法signingConfig()【英文标题】:Gradle build: Could not find method signingConfig() for arguments 【发布时间】:2018-09-20 01:01:29 【问题描述】:

如果我正在尝试更新 Cordova android 项目。

更新平台版本后出现如下错误:

Gradle 'android' 项目刷新失败

错误:找不到参数的签名配置()方法 [SigningConfig_Decoratedname=configFlavor1, storeFile=C:\myApp\project\platforms\android\app\keystore\flavor1.keystore, storePassword=mysecretpw,keyAlias=flavor1,keyPassword=mysecretpw, storeType=C:\myApp\project\platforms\android\app\keystore\flavor1.keystore, v1SigningEnabled=true, v2SigningEnabled=true, null] on ProductFlavor_Decoratedname=flavor1, dimension=null, minSdkVersion=DefaultApiVersionmApiLevel=16, mCodename='null', targetSdkVersion=DefaultApiVersionmApiLevel=26, mCodename='null', renderscriptTargetApi=null,renderscriptSupportModeEnabled=null, renderscriptSupportModeBlasEnabled=null, renderscriptNdkModeEnabled=null,versionCode=null,versionName=null, applicationId=com.myapp.flavor1, testApplicationId=null, testInstrumentationRunner=null, testInstrumentationRunnerArguments=, testHandleProfiling=null,testFunctionalTest=null,signingConfig=null, resConfig=null, mBuildConfigFields=, mResValues=, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders=, mWearAppUnbundled=null 类型 com.android.build.gradle.internal.dsl.ProductFlavor.

我的 build.gradle 如下所示:

android 
    signingConfigs             
        configFlavor1 
            keyAlias 'flavor1'
            keyPassword 'mysecretpw'
            storeFile file('./keystore/flavor1.keystore')
            storePassword 'mysecretpw'
        
        configFlavor2 
            keyAlias 'flavor2'
            keyPassword 'mysecretpw'
            storeFile file('./keystore/flavor2.keystore')
            storePassword 'mysecretpw'
        
    
    sourceSets 
        main 
            manifest.srcFile './src/main/AndroidManifest.xml'
            java.srcDirs = ['.src/main/java']
            resources.srcDirs = ['.src/main/java']
            aidl.srcDirs = ['.src/main/java']
            renderscript.srcDirs = ['.src/main/java']
            res.srcDirs = ['.src/main/res/myapp']
            assets.srcDirs = ['.src/main/assets']
            jniLibs.srcDirs = ['./src/main/libs']
        

        flavor2 
            res.srcDirs = ['res/flavor2']
        
    
    defaultConfig 
        versionCode cdvVersionCode ?: Integer.parseInt("" + privateHelpers.extractIntFromManifest("versionCode") + "0")

        if (cdvMinSdkVersion != null) 
            minSdkVersion cdvMinSdkVersion
        
        applicationId 'com.myapp.flavor1'
        minSdkVersion 16
        targetSdkVersion 26
    

    lintOptions 
      abortOnError false;
    
    compileSdkVersion cdvCompileSdkVersion
    buildToolsVersion cdvBuildToolsVersion
    flavorDimensions "flavor1", "flavro2"

    compileOptions 
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    

    productFlavors 
        flavor1 
            minSdkVersion 16
            targetSdkVersion 26
            applicationId 'com.myapp.flavor1'
            signingConfig signingConfigs.configFlavor1,
            dimension "flavor1"
            

        flavor2 
            minSdkVersion 16
            targetSdkVersion 26
            applicationId 'com.myapp.flavor2'
            signingConfig signingConfigs.configFlavor2,
            dimension "flavor2"
        
        
        buildTypes 
            release 
                zipAlignEnabled true
                signingConfig signingConfigs.release
            
        
        addSigningProps(cdvReleaseSigningPropertiesFile, signingConfigs.release)

签名配置(密钥/密码)在旧版本上按预期工作。 我在新 build.gradle 上更改的一件事是添加 flavorDimensions(Android Studio 要求定义它们)。

我不知道为什么签名配置被标记为无效。

任何帮助表示赞赏 - 在此先感谢!

【问题讨论】:

是否没有与错误相关的行号? 【参考方案1】:

您必须在签名块中添加此 DSL,而不是在 buildTypes 块中。

signingConfigs 
            release 
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']

            



【讨论】:

谢谢,我在signingConfigs上明确添加了release,但错误依旧 将您的 signingConfigs 块移动到您的 buildTypes 块之前: signingConfigs 块已经在顶部,参见上面的示例【参考方案2】:

发生错误

signingConfig signingConfigs.configFlavor1, dimension "flavor1"

使用逗号的地方:x

【讨论】:

以上是关于Gradle build:找不到参数的方法signingConfig()的主要内容,如果未能解决你的问题,请参考以下文章

build.gradle 文件中的 compileKotlin 块抛出错误“找不到参数的方法 compileKotlin() [...]”

在以下类型的对象上找不到参数 [com.android.tools.build:gradle:3.3.0] 的方法 classpath():

Gradle 和 proguard:找不到参数的方法 runProguard() [true]

找不到参数的方法 bootJar()

找不到方法“com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;”

Android Studio 3.0 - 找不到方法“com.android.build.gradle.internal.variant.BaseVariantData.getOutputs()Lja