在集成 Jetpack Compose 时应用插件请求 [id: 'com.android.application'] 发生异常

Posted

技术标签:

【中文标题】在集成 Jetpack Compose 时应用插件请求 [id: \'com.android.application\'] 发生异常【英文标题】:An exception occurred applying plugin request [id: 'com.android.application'] while integration Jetpack Compose在集成 Jetpack Compose 时应用插件请求 [id: 'com.android.application'] 发生异常 【发布时间】:2021-05-28 06:37:29 【问题描述】:

我正在尝试使用 Canary 8 实现 JetPack Compose,但每次尝试同步 gradle 时都会出现此错误

应用插件请求时发生异常 [id: 'com.android.application']

我的 app\build.gradle 文件在下面

    plugins 
    id 'com.android.application'
    id 'kotlin-android'


android 
    compileSdkVersion 30
    buildToolsVersion "30.0.0"

    defaultConfig 
        applicationId "com.example.myapplication"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    

    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        
    
    compileOptions 
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    
    kotlinOptions 
        jvmTarget = '11'
        useIR = true
    
    buildFeatures 
        compose true
    
    composeOptions 
        kotlinCompilerExtensionVersion compose_version
        kotlinCompilerVersion '1.4.30'
    

dependencies 
    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation "androidx.compose.ui:ui:$compose_version"
    implementation "androidx.compose.material:material:$compose_version"
    implementation "androidx.compose.ui:ui-tooling:$compose_version"
    implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.0-alpha06'
    implementation 'androidx.activity:activity-compose:1.3.0-alpha02'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

我的 build.gradle 文件在下面

buildscript 
    ext 
        compose_version = '1.0.0-beta01'
    
    repositories 
        google()
        mavenCentral()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:7.0.0-alpha08'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30"
    


task clean(type: Delete) 
    delete rootProject.buildDir

这是我的 gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-all.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

【问题讨论】:

你也有例外吗? @Gaëtan 是的,org.gradle.api.plugins.InvalidPluginException: 使用快捷键 Ctr+Alt+Shift+S 或转到文件 > 项目结构并将 JDK 位置更改为嵌入式 JDK 【参考方案1】:

Android Gradle 插件 7 需要 Java 11。

转到File > Project Structure 并将JDK 位置更改为Embedded JDK

【讨论】:

Project Structure 在哪里?我找不到它。 @a55 正如答案所说,“文件->项目结构...”。或者,快捷方式:“CMD+;”。 使用快捷键Ctr+Alt+Shift+S 还是同样的错误【参考方案2】:

对于 Android Studio Artic Fox (2020.3.1),您可以在此处找到 JDK 设置:

Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JDK

然后将设置更改为“嵌入式JDK”

【讨论】:

没什么,还是一样的错误【参考方案3】:

对于 Android Studio Artic Fox (2020.3.1),Android Gradle 插件 7 需要 Java 11。 使用短键 Ctr+Alt+Shift+S 或 转到 文件 > 项目结构 并将 JDK 位置更改为 Embedded JDK。相同的答案@Mariusz

【讨论】:

【参考方案4】:

查看下图重定向JDK源:

第 1 步。

第 2 步。

第 3 步。

你应该很高兴。

【讨论】:

已经 11 岁了,所以不,不是解决方案【参考方案5】:

我有构建缓存的问题和错误:

An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
   > The option 'android.enableBuildCache' is deprecated.
     The current default is 'false'.
     It was removed in version 7.0 of the Android Gradle plugin.

从根 gradle 属性文件中删除 org.gradle.caching=true 解决了这个问题。

【讨论】:

如果我从现有项目中删除 org.gradle.caching=true 会有什么影响 我们不再需要它了。你可以删除这个【参考方案6】:

根据documentation,AGP 7.x.x 需要 Gradle 7。正如您在 gradle-wrapper 中看到的,您使用的是 Gradle 6.8.2。尝试更新项目以使用 Gradle 7(当前最新版本为 7.0-milestone-2)。您可以手动执行此操作,也可以简单地通过文件 > 项目结构来执行此操作。

【讨论】:

我不明白为什么 android 的行为如此诡异,因为 2 天前相同的配置运行良好。此外,当我尝试将 Gradle 从 6.8.2 更新到 7.x.x 时,它开始给出另一个异常 你能和我们分享一下新的例外吗? 你已经在使用 AGP 7 com.android.tools.build:gradle:7.0.0-alpha08 Android Gradle Plugin != Gradle,我敢打赌 alpha08 中的 AGP 有一些错误,或者其他一些依赖项有错误或没有升级 更新:切换到 gradle 7 m 2 distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-milestone-2-bin.zip 仍然给出相同的异常 An exception occurred applying plugin request [id: 'com.android.application'] @Mariusz,万岁!!!这次修好了。但很奇怪我用distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin-zip 和java8 开发了一个演示应用程序。但突然它停止工作了。非常感谢.. 将 java 8 升级到 java 11 解决了我的问题。【参考方案7】:

我认为你需要做的就是先去:

    Android Studio 菜单 -> 首选项 -> 构建、执行、部署 在 gradle 项目部分,选择:Gradle JDK version 下拉菜单 它将显示您在设备上安装的所有 JDK // 请参见附图右下方的下拉菜单。 选择 JDK 11。

完成,现在您应该可以毫无问题地构建了。

或者,如果您使用 CLI 构建,则将 ~/.zshrc(或 Ubuntu 的 bash 等效文件,我使用的是 MacOS 11,所以这里是 Zsh,您的设备上应该有 Bash)到 JDK11。修改 Zsh/Bash 资源文件后,保存并执行命令:

$ source ~/.zshrc // 更新更改 $ java -version // 检查java版本

示例输出 java 版本:

openjdk version "11.0.8" 2020-07-14 LTS
OpenJDK Runtime Environment Corretto-11.0.8.10.1 (build 11.0.8+10-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.8.10.1 (build 11.0.8+10-LTS, mixed mode)

注意: 我使用的是 MacOS 11.2.1、Android Studio Artic Fox、2020.3.1、Gradle 版本 7.0.2

【讨论】:

以上是关于在集成 Jetpack Compose 时应用插件请求 [id: 'com.android.application'] 发生异常的主要内容,如果未能解决你的问题,请参考以下文章

Jetpack Compose 深入探索系列四: Compose UI

Google开源,Android Jetpack Compose最新开发应用指南

屏幕滚动到顶部(Jetpack Compose 分页)

如何在运行时添加 texdfields 并在 android jetpack compose 中管理这些文本字段值?

Jetpack Compose 和 Hilt 冲突

谷歌内部学习分享 Android Jetpack Compose开发应用指南,赶紧码住