簡體   English   中英

在 build.gradle 文件中添加 buildFeatures 時出錯

[英]Error when adding buildFeatures in build.gradle file

我正在嘗試 compose,這是 Andorid jetpack 中的一個新功能。 下面是我的代碼。 我在應用程序的 build.gradle 文件中添加構建功能,而不是在根文件夾中。

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.

當我嘗試將 Jetpack 添加到我現有的應用程序時,我發現了這個錯誤。 我遵循了Suraj 的回答,甚至使用了最新的Kotlin gradle 插件,但無法准確找出問題所在。 我也遵循了官方設置指南,但沒有奏效。 一切似乎都很好,但沒有任何幫助。

安裝 Android Studio 4.0 金絲雀也沒有幫助。

事實證明,僅包含某些依賴項是不夠的——您需要特定版本或更高版本。 我使用的是較舊的Android Gradle 插件: 3.5.3 升級到4.0.0-alpha07修復了錯誤:

classpath 'com.android.tools.build:gradle:4.0.0-alpha07'

如果您將 Jetpack 添加到現有應用程序,請務必檢查您的依賴項

看來這

buildFeatures {
    viewBinding true
}

被替換為

viewBinding {
    enabled true
}

參考

要將 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'
    ...
}

您只能在 Android Studio 4.0+ 中添加它,該版本僅適用於 Canary 版本

對於build.gradle.kts無法添加它

android {
    buildFeatures {
        dataBinding = true
        viewBinding = true
    }
}

起作用的是:

android {
    buildFeatures.dataBinding = true
    buildFeatures.viewBinding = true
}

這取決於您使用的是哪個版本的 Android Studio(和 gradle)。 上述語法用於較新版本的 gradle(Android Studio 4.0 canary 及更高版本)

如果您使用的是 3.5.3,請使用以下內容:

dataBinding {
   enabled = true
 }

來源: https://github.com/stripe/stripe-terminal-android/issues/90

嘗試增加您的依賴項 yourproject/build.gradle

buildscript {
    ext.kotlin_version = '1.4.10'

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

還有你的project/gradle/wrapper/gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-all.zip

通過升級到 Android Studio 4.1.2 和 Gradle 到 4.1.2,我解決了這個問題。

您在其中添加此文件的 build.gradle 文件一定是錯誤的。 如果你看到,有兩個文件,我們要 select build.gradle (Module: <project_name.app>),命名為 build.gradle (:app) 當你打開它。

這將使用 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'
        }
    }

在此處查看最新的 gradle 版本

我在用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"

I upgraded the Top level build.gradle file Gradle version to classpath 'com.android.tools.build:gradle:7.0.0' and distributionUrl in Gradle-wrapper.properties as distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip 這幫助我擺脫了錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM