使用Gradle在Android Studio中更改BuildConfig文件

6
我正在尝试使用Gradle在Android Studio中将URL添加到我的BuildConfig文件中。因此,我将以下代码添加到gradle文件中。
buildTypes {
    debug {
        buildConfigField "String", "MIDTRANS_API", '"https://app.sandbox.midtrans.com/snap/v1"'
    }
}

然后我尝试重新构建我的项目,并希望这个值会出现在BuildConfig文件中,但事实并非如此。有人能解释一下如何正确地做吗?
我的完整gradle文件代码如下:
apply plugin: 'com.android.library'

android {
    compileSdkVersion 27
    buildToolsVersion '27.0.3'
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}
buildTypes {
    debug {
        buildConfigField "String", "DAR_API", '"{some string}"'
        buildConfigField "String", "DAR_API_AUTH", '"{some string}"'
        buildConfigField "String", "MIDTRANS_API", '"https://app.sandbox.midtrans.com/snap/v1"'
    }

    rc {
        minifyEnabled true
        debuggable true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        buildConfigField "String", "DAR_API", '"{some string}"'
    }

    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        buildConfigField "String", "DAR_API", '"{some string}"'
    }
}

接下来是依赖项,但我认为这与问题无关。

3个回答

4

试试这个:

buildTypes {
        debug {
            buildConfigField "String", "MIDTRANS_API", "\"https://app.sandbox.midtrans.com/snap/v1\""
        }
        release {
            buildConfigField "String", "MIDTRANS_API", "\"https://app.sandbox.midtrans.com/snap/v1\""
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

在Java中,您可以通过同步Gradle文件后使用以下代码访问它。
String url = BuildConfig.MIDTRANS_API

我应该将这个字段添加到发布中,以便在BuildConfig文件中看到它吗?因为我无法像你在答案中所述那样访问它。 - Asset Bekbossynov
你应该重新构建你的项目,以便在BuildConfig中添加字段。 - Zeeshan Shabbir
你知道吗,我在BuildConfig中有一个其他的字段,我改变了它的值,重新构建了项目,但它仍然没有改变,为什么? - Asset Bekbossynov
1
你可能在使用错误的 buildConfig 文件。当你导入 BuildConfig 时,请确保它与你的应用程序模块的包名匹配。 - Zeeshan Shabbir
1
@ZeeshanShabbir "当你导入BuildConfig时,请确保它与您的应用程序模块的包名称匹配。"我的导入不正确。感谢您的帮助。 - NullByte08
显示剩余9条评论

0

我通过在manifest.xml文件中更改包名解决了我的问题,该文件仍未更新:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          package="com.example.android">

0

我在我的项目中尝试使用相同的buildConfigField属性,并且成功地在debug变体的BuildConfig文件下看到了它。

可能是因为您的项目没有正确重建。尝试清理项目,然后再次构建。

要在Java代码中获取属性值,您需要执行以下操作:

String API_URL = BuildConfig.MIDTRANS_API;

注意:为了在发布版本中访问此属性,您还需要将其复制到发布类型下。然后将构建变体更改为发布。

在您的gradle文件中执行以下操作:

buildTypes {

    debug {
        buildConfigField "String", "MIDTRANS_API", '"https://app.sandbox.midtrans.com/snap/v1"'
    }

    release {
        buildConfigField "String", "MIDTRANS_API", "https://app.sandbox.midtrans.com/snap/v1"
    }
}

这应该可以解决你的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接