在 build.gradle 文件中添加 buildFeatures 时出错
Error when adding buildFeatures in build.gradle file
我正在尝试 compose,这是 Andorid jetpack 中的一项新功能。下面是我的代码。我在应用程序的 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.
您只能在 Android Studio 4.0+ 中添加它,它仅适用于 Canary 版本
要将 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'
...
}
我在尝试将 Jetpack 添加到我现有的应用程序时遇到了这个错误。我关注了 answer, even used the newest Kotlin gradle plugin, and couldn't exactly figure out what was wrong. I also followed the official 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 添加到现有应用,请务必检查依赖项
对于 build.gradle.kts
我 无法 添加它
android {
buildFeatures {
dataBinding = true
viewBinding = true
}
}
起作用的是这样的:
android {
buildFeatures.dataBinding = true
buildFeatures.viewBinding = true
}
好像是这个
buildFeatures {
viewBinding true
}
被替换为
viewBinding {
enabled true
}
尝试提高你的依赖性
yourproject/build.gradle
buildscript {
ext.kotlin_version = '1.4.10'
dependencies {
classpath 'com.android.tools.build:gradle:4.1.1'
}
}
还有
yourproject/gradle/wrapper/gradle-wrapper.属性
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-all.zip
一定是你添加这个的 build.gradle 文件有误。如果你看到,有两个文件,我们要select build.gradle (Module: ),打开时命名为build.gradle (:app)它。
it depends on which version of Android Studio (and gradle) you're using. The above syntax is used for the newer versions of gradle (Android Studio 4.0 canary and above)
如果您使用的是 3.5.3,请使用以下内容:
dataBinding {
enabled = true
}
来源:https://github.com/stripe/stripe-terminal-android/issues/90
通过升级到 Android Studio 4.1.2 和 Gradle 到 4.1.2,我解决了这个问题。
这将解决使用 Android 4.0 及更高版本。
如果还是不行请尝试设置数据绑定
替换
android {
buildFeatures {
dataBinding = true
}
}
由此
android {
buildFeatures.dataBinding = true
}
对我有用。
我的 Android Studio 是 3.2.1 版本,下面的代码对我有用。 Gradle 脚本 -> build.gradle 文件,在 android 部分,添加以下行:
dataBinding {
enabled = true
}
升级到最新版本
最新,只需将顶级(项目级)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'
}
}
查看最新gradleversion here
我在用 viewBinding
替换 Kotlin 合成时遇到了这个问题。结果我把 buildFeatures
放在了 gradle 文件的错误部分。我不小心把它放在 android
部分之外,这是我之前为 androidExtensions
.
设置实验标志的地方
所以我不得不接受这个:
android {
...
}
buildFeatures {
viewBinding = true
}
然后改成这样:
android {
...
buildFeatures {
viewBinding = true
}
}
更改 gradle 版本对我有用
classpath "com.android.tools.build:gradle:3.3.3"
至
classpath "com.android.tools.build:gradle:4.1.3"
我将顶级 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
。这帮助我摆脱了错误。
我正在尝试 compose,这是 Andorid jetpack 中的一项新功能。下面是我的代码。我在应用程序的 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.
您只能在 Android Studio 4.0+ 中添加它,它仅适用于 Canary 版本
要将 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'
...
}
我在尝试将 Jetpack 添加到我现有的应用程序时遇到了这个错误。我关注了
安装 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 添加到现有应用,请务必检查依赖项
对于 build.gradle.kts
我 无法 添加它
android {
buildFeatures {
dataBinding = true
viewBinding = true
}
}
起作用的是这样的:
android {
buildFeatures.dataBinding = true
buildFeatures.viewBinding = true
}
好像是这个
buildFeatures {
viewBinding true
}
被替换为
viewBinding {
enabled true
}
尝试提高你的依赖性 yourproject/build.gradle
buildscript {
ext.kotlin_version = '1.4.10'
dependencies {
classpath 'com.android.tools.build:gradle:4.1.1'
}
}
还有 yourproject/gradle/wrapper/gradle-wrapper.属性
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-all.zip
一定是你添加这个的 build.gradle 文件有误。如果你看到,有两个文件,我们要select build.gradle (Module:
it depends on which version of Android Studio (and gradle) you're using. The above syntax is used for the newer versions of gradle (Android Studio 4.0 canary and above)
如果您使用的是 3.5.3,请使用以下内容:
dataBinding {
enabled = true
}
来源:https://github.com/stripe/stripe-terminal-android/issues/90
通过升级到 Android Studio 4.1.2 和 Gradle 到 4.1.2,我解决了这个问题。
这将解决使用 Android 4.0 及更高版本。
如果还是不行请尝试设置数据绑定
替换
android {
buildFeatures {
dataBinding = true
}
}
由此
android {
buildFeatures.dataBinding = true
}
对我有用。
我的 Android Studio 是 3.2.1 版本,下面的代码对我有用。 Gradle 脚本 -> build.gradle 文件,在 android 部分,添加以下行:
dataBinding {
enabled = true
}
最新,只需将顶级(项目级)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'
}
}
查看最新gradleversion here
我在用 viewBinding
替换 Kotlin 合成时遇到了这个问题。结果我把 buildFeatures
放在了 gradle 文件的错误部分。我不小心把它放在 android
部分之外,这是我之前为 androidExtensions
.
所以我不得不接受这个:
android {
...
}
buildFeatures {
viewBinding = true
}
然后改成这样:
android {
...
buildFeatures {
viewBinding = true
}
}
更改 gradle 版本对我有用
classpath "com.android.tools.build:gradle:3.3.3"
至
classpath "com.android.tools.build:gradle:4.1.3"
我将顶级 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
。这帮助我摆脱了错误。