标签: android-buildconfig

修复“构建类型包含自定义 BuildConfig 字段,但该功能已禁用”错误 w/ buildConfigField

在带有 org.jetbrains.kotlin (1.8.0-Beta) 插件和 8.0.0-alpha09 gradle 插件的新版本 Android Studio (Flamingo | 2022.2.1 Canary 9) 中,新版本突然出现此错误:

构建类型“release”包含自定义 BuildConfig 字段,但该功能已禁用。

有办法让它消失吗?

java android gradle android-studio android-buildconfig

106
推荐指数
3
解决办法
6万
查看次数

android SDK 24的buildToolsVersion是什么?

关于这一点我没说太多.那好吧.谷歌发布了一个名为Nougat(android N)的新版android.它是compileSdkVersion 24.但是,在官方文档中的构建工具页面上,没有提到它.

我想让我的应用程序100%的人使用Google Play商店,其中包括Android N用户.

tl;博士:我应该在buildToolsVersion字段中填写什么?

谢谢.

android build-tools android-buildconfig

15
推荐指数
2
解决办法
3万
查看次数

使用整数变量gradle buildConfigField

我想定义一个构建配置文件,我可以在它自己使用gradle脚本中定义的变量:

def someVar = 512
android {
...
    buildConfigField 'int', 'SOME_INT_FIELD',  someVar
}
Run Code Online (Sandbox Code Playgroud)

但这会产生以下错误:

错误:(25,0)未找到Gradle DSL方法:'buildConfigField()'

可能的原因:

  • 项目"PROJECT"可能正在使用不包含该方法的Gradle版本.
  • 构建文件可能缺少Gradle插件.

  • 我可以使用以下引用:

    def someVar = 0
    android {
    ...
        buildConfigField 'int', 'SOME_INT_FIELD',  '"' + someVar + '"'
    }
    
    Run Code Online (Sandbox Code Playgroud)

    但这导致BuildConfig中的编译器错误

    // Fields from default config.
    public static final int SOME_INT_FILED = "512";
    
    Run Code Online (Sandbox Code Playgroud)

    所以现在我留下来:

    def someVar = 0
    android {
    ...
        buildConfigField 'String', 'SOME_INT_FIELD',  '"' + someVar + '"'
    }
    
    Run Code Online (Sandbox Code Playgroud)

    并使用它像:

    final int value = Integer.valueOf(BuildConfig.SOME_INT_FIELD);
    
    Run Code Online (Sandbox Code Playgroud)

    有没有人有更好的解决方案或我使用buildConfigField错误?

    (我也尝试将括号与上述任何可能性结合使用.)

    variables android buildconfig gradle android-buildconfig

    11
    推荐指数
    4
    解决办法
    1万
    查看次数

    Java模块中BuildConfig的等价物是什么? - Android

    我正在使用AndroidStudio,我有以下内容:

    • 主Android项目:app
    • Java Library:沟通

    我想设置我的"通信"模块的gradle文件来实现以下目的:

    • 作为app模块的gradle,我可以为BuildConfig.java文件设置变量,例如:

      buildTypes {
          release {
              ...
              buildConfigField "String", "SERVER_URL", '"my_url"'
          }
      
          debug {
              buildConfigField "String", "SERVER_URL", '"my_url"'
          }
      }
      
      Run Code Online (Sandbox Code Playgroud)

    然后我可以使用它们 BuildConfig.SERVER_URL

    问题是:如何使用Java Library模块实现此目的?

    java android module android-gradle-plugin android-buildconfig

    10
    推荐指数
    2
    解决办法
    2391
    查看次数

    Android Studio 3.5.2 - 错误:您当前选择的变体 (app-release-unsigned.apk) 的 apk 未签名

    一点背景。我几个月来一直在构建/调试/测试我的简单应用程序,没有任何问题。在 AVD 或我的实际 S9 手机上构建/安装。几个月来一切都很好。现在,准备好在 Play 商店发布我的第一个测试版(我的第一个应用程序)。因此,我按照“签署”我的应用程序的说明进行操作。那行得通,我将我的应用程序包上传到了 Play 商店。现在我根本无法在 Android Studio 中构建/调试/安装。

    错误:您当前选择的变体 (app-release-unsigned.apk) 的 apk 未签名。请为此变体(发行版)指定签名配置。

    在此处输入图片说明

    调试 (Shift+F9) 产生上述错误并显示“编辑配置”对话框。

    在此处输入图片说明

    我点击了“修复”按钮,然后我不知道该怎么做。或者如何使用这些不同的构建配置。

    在此处输入图片说明

    构建.gradle

    apply plugin: 'com.android.application'
    
    android {
        signingConfigs {
            debug {
                storeFile file(var)
                storePassword 'xxx'
                keyAlias = 'xxx'
                keyPassword 'xxx'
            }
        }
        compileSdkVersion 29
        buildToolsVersion "29.0.1"
        defaultConfig {
            applicationId "com.birdersdiary.mobile"
            minSdkVersion 15
            targetSdkVersion 29
            versionCode 1
            versionName "b1.0"
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar']) …
    Run Code Online (Sandbox Code Playgroud)

    android android-studio android-buildconfig

    10
    推荐指数
    3
    解决办法
    7845
    查看次数

    gradle 风味维度中的组合 BuildConfig 变量

    在我的 Android 应用程序中,我有两个风味维度:“品牌”(品牌 1、品牌 2)和“环境”(登台、生产)。BuildConfig一段时间后,我添加了“环境”维度,并且之前为不同品牌定义了一些变量。更具体地说,我BASE_URL这样定义:

    flavorDimensions 'brand'
    productFlavors {
    
        brand1 {
            dimension 'brand'
            ...
            buildConfigField "String", "BASE_URL", "\"http://brand.one.api/\""
            ...
        }
    
        brand2 {
            dimension 'brand'
            ...
            buildConfigField "String", "BASE_URL", "\"http://brand.two.api/\""
            ...
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    现在,我添加了“环境”维度,我想要设置的是四个不同的端点:

    1. Brand1-staging:“ http://brand.one.staging.api/
    2. Brand1-生产:“ http://brand.one.production.api/
    3. Brand2-staging:“ http://brand.two.staging.api/
    4. Brand2-生产:“ http://brand.two.Production.api/

    但我不知道如何BuildConfig为风味维度的特定组合创建变量。这甚至可以用裸 gradle 实现吗?

    谢谢

    gradle android-build-flavors android-flavordimension android-buildconfig

    7
    推荐指数
    1
    解决办法
    1989
    查看次数

    如何检查android库中的debuggable或debug构建类型?

    我有一个Android AAR库.我想对我的库的消费者应用程序强加的一个安全策略是,当它debuggable为true或者使用the创建apk 时,它必须无法使用我的库.debug buildType.

    如何在android中以编程方式检查?

    java android android-studio android-gradle-plugin android-buildconfig

    7
    推荐指数
    2
    解决办法
    1033
    查看次数

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

    我正在尝试使用Android StudioBuildConfig中的 Gradle 将 URL 添加到我的文件中。所以我将这段代码添加到文件中gradle

    buildTypes {
        debug {
            buildConfigField "String", "MIDTRANS_API", '"https://app.sandbox.midtrans.com/snap/v1"'
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    然后我尝试重建我的项目并希望该值将出现在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 …
    Run Code Online (Sandbox Code Playgroud)

    android android-gradle-plugin android-buildconfig

    6
    推荐指数
    1
    解决办法
    3万
    查看次数

    使用ProGuard缩小代码后,在APK分析器中的哪里可以找到我的BuildConfig?

    请在Android Studio上查看以下来自Analyze APK的图像。

    • 第一个是minifyEnabled = false,和
    • 另一个与minifyEnabled = true(当然是在使用mapping.txt解码之后)

    在此处输入图片说明
    minifyEnabled = falseBuildConfig在那儿。

    在此处输入图片说明
    minifyEnabled = true(使用mapping.txt解码)。BuildConfig不在这里。

    我可以BuildConfigclasses.dex缩小之前找到,而在缩小之后找不到。我找不到关于这个的任何文件/讨论,但是有一些规则,以剥离BuildConfigclasses.dex与涅槃后的ProGuard?在那种情况下,这是否意味着将敏感信息放入相对安全BuildConfig?或者,它可能只是藏在其他地方?

    如果重要的话,我的ProGuard版本是4.7。

    android proguard buildconfig android-buildconfig

    6
    推荐指数
    1
    解决办法
    239
    查看次数

    从库模块获取版本代码和名称

    我目前正在致力于模块化我的应用程序,因此我将每个功能放入库模块中。在我的一项功能中,我访问版本代码和名称。但是,尽管我在特定于该模块的 build.gradle 文件中定义了它们

    库模块的 build.gradle 文件

    它们不存在于生成的 BuildConfig 文件中

    模块中生成的BuildConfig文件

    我无法引用原始:app模块的 BuildConfig 文件,因为我不能让我的功能模块依赖于该模块。

    是否有其他方法可以从库模块访问此信息?

    android modularization android-buildconfig

    6
    推荐指数
    2
    解决办法
    4074
    查看次数