在 build.gradle 文件中添加 buildFeatures 时出错
Posted
技术标签:
【中文标题】在 build.gradle 文件中添加 buildFeatures 时出错【英文标题】:Error when adding buildFeatures in build.gradle file 【发布时间】:2020-02-29 17:35:44 【问题描述】:我正在尝试 compose,它是 Andorid jetpack 中的一个新功能。下面是我的代码。我在 app 的 build.gradle 文件中添加 buildfeatures,而不是在根文件夹中。
android
compileSdkVersion compileSDKVer
buildToolsVersion buildToolsVer
defaultConfig
applicationId "com.sample.slothyhacker.jetpackcompose"
minSdkVersion minSdkVer
targetSdkVersion targetSdkVer
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
buildFeatures
// Enables Jetpack Compose for this module
//compose true
compileOptions
// Set both the Java and Kotlin compilers to target Java 8.
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
kotlinOptions
jvmTarget = "1.8"
但是我的项目给了我一个编译错误。如果有人能说明我做错了什么,我将不胜感激。
Could not find method buildFeatures() for arguments [build_7yf57wk394cperk1t82v120yf$_run_closure1$_closure5@78c292be] on object of type com.android.build.gradle.internal.dsl.BaseAppModuleExtension.
【问题讨论】:
你的 Gradle 版本是什么? 最低api级别是多少?它应该是 21 或更高 你只能在 Android Studio 4.0+ 中添加这个,只有 Canary 版本才可用 【参考方案1】:当我尝试将 Jetpack 添加到我现有的应用程序时,我发现了这个错误。我关注了Suraj's 的回答,甚至使用了最新的Kotlin gradle 插件,但无法准确找出问题所在。我也关注了官方的setup guide,也没用。一切看起来都还好,但没有任何帮助。
安装 Android Studio 4.0 canary 也没有帮助。
事实证明,仅仅包含某些依赖项是不够的——您需要特定版本或更高版本。我使用的是较旧的 Android Gradle 插件:3.5.3
。升级到4.0.0-alpha07
修复了错误:
classpath 'com.android.tools.build:gradle:4.0.0-alpha07'
如果您将 Jetpack 添加到现有应用程序,请务必检查您的依赖项
【讨论】:
我被告知永远不要升级 Gradle,每次我都必须重新安装所有东西!【参考方案2】:好像是这样
buildFeatures
viewBinding true
被替换为
viewBinding
enabled true
Reference
【讨论】:
你是对的,不知道为什么你被否决了。谷歌文档也是错误的。 developer.android.com/topic/libraries/view-binding 错了。甚至来自 Marvin Effing 的链接也说:“ buildFeatures viewBinding = true ”【参考方案3】:对于build.gradle.kts
,我无法添加
android
buildFeatures
dataBinding = true
viewBinding = true
起作用的是这样的:
android
buildFeatures.dataBinding = true
buildFeatures.viewBinding = true
【讨论】:
【参考方案4】:要将 jetpack compose 添加到您的项目中,您需要按照以下步骤操作:
注意:您应该使用 Android Studio 的 4.1 Canary 版本
第 1 步:在 build.gradle
文件中
android
defaultConfig
...
minSdkVersion 21
buildFeatures
// Enables Jetpack Compose for this module
compose true
...
// Set both the Java and Kotlin compilers to target Java 8.
compileOptions
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
kotlinOptions
jvmTarget = "1.8"
注意:Jetpack Compose 当前需要 Kotlin-Gradle 插件的实验版本。要在您的应用中包含此插件,请在项目的 build.gradle 文件中包含以下内容
buildscript
repositories
google()
jcenter()
// To download the required version of the Kotlin-Gradle plugin,
// add the following repository.
maven url 'https://dl.bintray.com/kotlin/kotlin-eap'
...
dependencies
classpath 'com.android.tools.build:gradle:4.0.0-alpha01'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.60-eap-25'
allprojects
repositories
google()
jcenter()
maven url 'https://dl.bintray.com/kotlin/kotlin-eap'
第 2 步:在您的 build.gradle
文件中添加 Jetpack Compose 工具包依赖项
dependencies
// You also need to include the following Compose toolkit dependencies.
implementation 'androidx.ui:ui-tooling:0.1.0-dev02'
implementation 'androidx.ui:ui-layout:0.1.0-dev02'
implementation 'androidx.ui:ui-material:0.1.0-dev02'
...
【讨论】:
是的!其作品。谢谢,我想知道您在哪里找到该代码?我在documentation 中没有找到【参考方案5】:您只能在 Android Studio 4.0+ 中添加它,该版本仅适用于 Canary 构建
【讨论】:
我认为这不是一个准确的答案。当我有 4.0.1 版时,此错误会重复 你知道金丝雀版本 4.0.1 @Mr.Lemon 我正在使用 4.1 RC3 但仍然 我的是 4.1,但这种情况仍在发生。 我使用的是 4.1.1 版本,但它仍然给我错误【参考方案6】:这取决于您使用的是哪个版本的 Android Studio(和 gradle)。以上语法用于较新版本的 gradle(Android Studio 4.0 canary 及以上)
如果您使用的是 3.5.3,请使用以下内容:
dataBinding
enabled = true
来源:https://github.com/stripe/stripe-terminal-android/issues/90
【讨论】:
这也适用于 Android Studio 3.6.3。谢谢【参考方案7】:尝试增加你的依赖 你的项目/build.gradle
buildscript
ext.kotlin_version = '1.4.10'
dependencies
classpath 'com.android.tools.build:gradle:4.1.1'
并且 yourproject/gradle/wrapper/gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-all.zip
【讨论】:
【参考方案8】:我通过升级到 Android Studio 4.1.2 和 Gradle 到 4.1.2 解决了这个问题。
【讨论】:
【参考方案9】:您在其中添加此内容的 build.gradle 文件一定是错误的。如果你看到,有两个文件,我们要选择build.gradle(Module:
【讨论】:
【参考方案10】:这将使用 Android 4.0 及更高版本解决。
如果还是不行,请尝试设置数据绑定
替换
android
buildFeatures
dataBinding = true
通过这个
android
buildFeatures.dataBinding = true
它对我有用。
【讨论】:
【参考方案11】:我的 Android Studio 是 3.2.1 版本,下面的代码对我有用。 Gradle Scripts -> build.gradle 文件,在 android 部分,添加以下行:
dataBinding
enabled = true
【讨论】:
【参考方案12】:在https://developer.android.com/studio/preview升级到最新版本
【讨论】:
【参考方案13】:最新,只需将顶层(项目级)build.gradle文件中的gradle版本更改为最新版本,
buildscript
repositories
// Gradle 4.1 and higher include support for Google's Maven repo using
// the google() method. And you need to include this repo to download
// Android Gradle plugin 3.0.0 or higher.
google()
...
dependencies
//Update This Line with latest Gradle version
classpath 'com.android.tools.build:gradle:4.2.0'
查看最新的 gradle version here
【讨论】:
【参考方案14】:我在用 viewBinding
替换 Kotlin 合成时遇到了这个问题。原来我把buildFeatures
放在了gradle文件的错误部分。我不小心把它放在了android
部分之外,这是我之前为androidExtensions
设置实验标志的地方。
所以我不得不接受这个:
android
...
buildFeatures
viewBinding = true
把它改成这样:
android
...
buildFeatures
viewBinding = true
【讨论】:
【参考方案15】:更改 gradle 版本对我有用
classpath "com.android.tools.build:gradle:3.3.3"
到
classpath "com.android.tools.build:gradle:4.1.3"
【讨论】:
【参考方案16】:我将*** build.gradle 文件 Gradle 版本升级为 classpath 'com.android.tools.build:gradle:7.0.0'
并将 Gradle-wrapper.properties 中的 distributionUrl 升级为 distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
。这帮助我摆脱了错误。
【讨论】:
以上是关于在 build.gradle 文件中添加 buildFeatures 时出错的主要内容,如果未能解决你的问题,请参考以下文章
Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.1——使用Build Types
在 build.gradle 文件中添加 buildFeatures 时出错
如何将参数添加到 flyway build.gradle 文件?
xamarin.android 怎么添加build.gradle依赖