错误:Gradle 同步失败:无法获取 DefaultConfig_Decorated 的未知属性“API_KEY”

Posted

技术标签:

【中文标题】错误:Gradle 同步失败:无法获取 DefaultConfig_Decorated 的未知属性“API_KEY”【英文标题】:ERROR: Gradle sync failed: Could not get unknown property 'API_KEY' for DefaultConfig_Decorated 【发布时间】:2018-08-09 09:23:37 【问题描述】:

错误:无法获取 DefaultConfig_Decoratedname=main, dimension=null, minSdkVersion=null, targetSdkVersion=null, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptSupportModeBlasEnabled=null, renderscriptNdkModeEnabled=null, versionCode= 的未知属性“API_KEY” null,versionName=null,applicationId=null,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.DefaultConfig。 应用插件:'com.android.application'

android 
    compileSdkVersion 27
    buildToolsVersion '27.0.2'
    defaultConfig 
        buildConfigField("String", "API_KEY", API_KEY)        //error here
        buildConfigField("String", "ER_API_KEY", ER_API_KEY)
        applicationId "com.gpads.gautham.imagetotextanalysis"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 2
        versionName "2.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
    // ... other values

【问题讨论】:

How to generate buildConfigField with String type的可能重复 包 com.gpads.gautham.imagetotextanalysis; public final class BuildConfig public static final boolean DEBUG = Boolean.parseBoolean("true");公共静态最终字符串 APPLICATION_ID = "com.gpads.gautham.imagetotextanalysis";公共静态最终字符串BUILD_TYPE =“调试”;公共静态最终字符串 FLAVOR = "";公共静态最终 int VERSION_CODE = 2;公共静态最终字符串 VERSION_NAME = "2.0"; @HemantParmar 这是我的 BuildConfig.java 【参考方案1】:

更改此 buildConfigField("String", "API_KEY", API_KEY) 进入这个

    buildConfigField "String", "API_KEY", "\" API_KEY\"" 

【讨论】:

【参考方案2】:

为避免您的代码出现任何错误,请添加此 sn-p,发现这是我的电影项目的解决方案:

def getProperty(String filename, String propName) 
    def propsFile = rootProject.file(filename)
    if (propsFile.exists()) 
        def props = new Properties()
        props.load(new FileInputStream(propsFile))
        if (props[propName] != null) 
            return props[propName]
         else 
            print("No such property " + propName + " in file " + filename);
        
     else 
        print(filename + " does not exist!")
    

android 
    compileSdkVersion 27
    buildToolsVersion '27.0.2'
    defaultConfig 
        buildConfigField "String", "API_KEY", "\"$getProperty("local.properties", API_KEY)\""
        buildConfigField "String", "\"$getProperty("local.properties", ER_API_KEY)\""
        applicationId "com.gpads.gautham.imagetotextanalysis"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 2
        versionName "2.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    

【讨论】:

这是唯一对我有用的解决方案,谢谢【参考方案3】:

错误在于您正在尝试使用您未定义的东西。

作为一种解决方案,您有几种方法来初始化配置字段:


。在相同的范围内,它可能是:

看看下面定义API_KEY_2的代码。

android 
    //...
    defaultConfig 
        //...
        def API_KEY_2 = "API_KEY_2"
        buildConfigField("String", "API_KEY", API_KEY_2)
    


。或者在全局范围内:

build.gradle

class Globals 
    static String API_KEY_2 = "API_KEY_2"


android 
    //...
    defaultConfig 
        //...
        def API_KEY_2 = "API_KEY_2"
        buildConfigField("String", "API_KEY", API_KEY_2)
    

注意:我不建议使用 BuildConfig.SOMETHING 来初始化 buildConfigField

GL

【讨论】:

以上是关于错误:Gradle 同步失败:无法获取 DefaultConfig_Decorated 的未知属性“API_KEY”的主要内容,如果未能解决你的问题,请参考以下文章

使用 0.4.3 Android Studio,错误:“Gradle 项目同步失败。基本功能(例如编辑、调试)将无法正常工作”

Android Studio上的gradle项目同步失败错误

android studio 0.4.2:Gradle 项目同步失败错误

Android Studio Gradle 项目同步失败

Android Studio 0.8.2 - Gradle 项目同步失败

Android studio gradle同步失败:constraintlayout-solver