android - 无法在应用程式Gradle文件中参照BuildConfig-Android Studio

标签 android android-studio gradle

我正在尝试基本的gradle功能。我正在尝试打印当前正在构建的产品 flavor 。我的gradle构建文件如下所示:

android {
    compileSdkVersion 27
    flavorDimensions "versionCode"
    defaultConfig {
        applicationId "com.test.test"
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 34
        versionName "0.9.14.20180718"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        debug {
            debuggable false
            multiDexEnabled true
            minifyEnabled false
            shrinkResources false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        release {
            debuggable false
            minifyEnabled true   //for optimization.
            shrinkResources true
            multiDexEnabled true

            logger.debug("Hello world.")
            logger.debug("Build flavor being used: " + BuildConfig.FLAVOR)

            //check for build flavour.
            /*if(BuildConfig.FLAVOR.contentEquals("managed")) {
                logger.debug("Managed flavour being used here.")
            } else if(BuildConfig.FLAVOR.contentEquals("debugFlavor")) {
                logger.debug("Debug flavor being used.")
            }*/

            //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    productFlavors {
        managed {
            applicationId 'com.test.testing'
        }
        debugFlavor {
            applicationId 'com.test.testdebug
        }
    }
}

每当我尝试更改Gradle文件时,同步时都会出现以下错误:
Error:(30, 0) Could not get unknown property 'BuildConfig' for BuildType_Decorated{name=release, debuggable=false, testCoverageEnabled=false, jniDebuggable=false, pseudoLocalesEnabled=false, renderscriptDebuggable=false, renderscriptOptimLevel=3, minifyEnabled=true, zipAlignEnabled=true, signingConfig=null, embedMicroApp=true, mBuildConfigFields={}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}} of type com.android.build.gradle.internal.dsl.BuildType.
<a href="openFile:I:\work\workspace\test\app\build.gradle">Open File</a>

我不确定错误是什么。我检查了项目存储库中的BuildConfig.java文件,它们存在并且看起来还不错。

最佳答案

logger.debug("Build flavor being used: " + BuildConfig.FLAVOR)

I am not sure what the error is. I checked the BuildConfig.java file in the project repository and they exist and look just fine.



这行在技术上是错误的,BuildConfig.java是gradle构建工具生成的文件,此文件只能用于Java / Kotlin的我们的代码,而不能用于任何build.gradle gradle脚本文件。

在gradle脚本中,打印出构建 flavor 的正确方法如下:
project.afterEvaluate {
    android.productFlavors.all { flavor ->
        println "flavor.name: " + flavor.name
    }
}

如果要打印构建变体,可以按照以下步骤进行:
android.applicationVariants.all { variant ->
    println "variant.name: " + variant.name
}

关于android - 无法在应用程式Gradle文件中参照BuildConfig-Android Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51472391/

相关文章:

maven - Gradle 无法解析本地主机上的 Maven 存储库

android - 在 ImageView 中使用位图时出现 OutOfMemory 问题

java - 如何在android中暂停和恢复倒计时器

android - SSLException:连接已关闭:javax.net.ssl.SSLException:标签不匹配

Android Studio native 调试不起作用,始终显示 "This file is not part of the project"

java - Spring 工具套件 : Error Importing Spring Getting Started Content

java - 将字节流转换为对象

android - SpotsDialog 在 'dmax.dialog.SpotsDialog 中具有私有(private)访问权限

java - 如何在Android上实现app子组件的模块化结构?

maven - gradle等效于mvn -Dmaven.repo.local =`pwd`/repo