相关疑难解决方法(0)

BuildConfig未正确创建(Gradle Android)

我正在尝试将我们的Android应用程序转换为gradle构建.我有项目,它的库成功建立.我现在正在尝试为我们的各种环境创建单独的apks(dev/test/prod为他们使用的restful服务提供了不同的url).

在搜索时,我觉得这样做的最佳方式是为每个环境制作不同的BuildConfig.这是我试过的:

import java.util.regex.Pattern

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:+'
    }
}

apply plugin: 'android'

task('increaseVersionCode') << {
    def manifestFile = file("AndroidManifest.xml")
    def pattern = Pattern.compile("versionCode=\"(\\d+)\"")
    def manifestText = manifestFile.getText()
    def matcher = pattern.matcher(manifestText)
    matcher.find()
    def versionCode = Integer.parseInt(matcher.group(1))
    def manifestContent = matcher.replaceAll("versionCode=\"" + ++versionCode + "\"")
    manifestFile.write(manifestContent)
}

tasks.whenTaskAdded { task ->
    if (task.name == 'generateReleaseBuildConfig') {
        task.dependsOn 'increaseVersionCode'
    }
}

dependencies {
    compile 'com.android.support:support-v4:19.0.0' 
    compile files('libs/commons-io-2.4.jar',
                  'libs/google-play-services.jar',
                  'libs/gson-2.2.4.jar',
                  'libs/universal-image-loader-1.8.6.jar',
                  'libs/wakeful-1.0.1.jar')
    compile project(':pulltorefresh_lib')
    compile project(':edgeeffect_lib') …
Run Code Online (Sandbox Code Playgroud)

android buildconfig gradle android-build android-gradle-plugin

44
推荐指数
11
解决办法
5万
查看次数

BuildConfig无法解决解决办法

Gradle buildConfigField BuildConfig 无法解析符号

在最新的 android studio 中,gradle 版本为 8.0.0 及以上,开发人员面临这个问题。当他们尝试使用自己的包名称导入 BuildConfig 类但它无法工作时。从导入中找不到自己的包名。因此,开发人员很困惑为什么它没有显示,并花了很多时间来解决这个问题。

但这是最新的 android studio 的 gradle 版本 8.0.0 及更高版本提供的新功能。因此,您只需在build.gradle文件中放置如下所示的简单代码即可。

android {
  buildFeatures {
        buildConfig = true
    }
 }
Run Code Online (Sandbox Code Playgroud)

为什么要使用 buildFeatures?

可以在 Android 应用程序项目中禁用或启用的构建功能列表。可以在 Android 动态功能项目中禁用或启用的构建功能列表。

构建配置

abstract var buildConfig: Boolean?
Run Code Online (Sandbox Code Playgroud)

用于启用/禁用 BuildConfig 类生成的标志。

将值设置为 null 会重置为默认值。默认值为 true。

您可以通过在构建根项目的 gradle.properties 文件中添加android.defaults.buildfeatures.buildconfig=true行来覆盖构建中所有项目的默认设置。

java dart kotlin flutter

8
推荐指数
0
解决办法
2373
查看次数

BuildConfig变量.错误:找不到符号

在项目中,我有几个flavors,几个buildTypes和几个folders组合

构建组合:

在此输入图像描述

文件夹结构

在此输入图像描述

在每个文件夹中我都有自定义Application class+ AndroidManifest来注册它Application class

在此输入图像描述

有时,但有时构建失败并cannot find symbol出现错误:

\app\src\main\java\ru\my\package\app\environment\MyApp.java:35: error: cannot find symbol
            .core(new CrashlyticsCore.Builder().disabled(!BuildConfig.ANALYTICS).build())
Run Code Online (Sandbox Code Playgroud)

App类独立但相同的错误

\app\src\main\java\ru\my\package\presentation\presenter\impl\MainPresenterImpl.java:104: error: cannot find symbol
    if (!BuildConfig.ANALYTICS) return;
Run Code Online (Sandbox Code Playgroud)

但是下一次构建可能是成功的,所以可能的流程是

  1. 建立(成功)
  2. 代码中的一些chagnes
  3. 构建(错误)
  4. 构建重试(成功)< - 代码中没有任何更改

注意

  • 这不是同步问题,同步/无效缓存不是答案
  • 这不是一个错误的import问题

免责声明:有些问题看起来像这个,但它们是不同的,例如

Gradle buildConfigField BuildConfig无法解析符号

UPDATE

Gradle依赖项:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation project(path: ':OVSALibrary')
    implementation project(path: ':YaMapProject')
    implementation 'com.jakewharton:butterknife:8.8.1'
    implementation 'com.google.dagger:dagger:2.14.1'
    kapt …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio build.gradle android-gradle-plugin

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