Android项目Gradle中JavaPluginConvention弃用警告的解决疑问
org.gradle.api.plugins.JavaPluginConvention过时警告 问题描述
构建Android应用时收到以下警告:
The org.gradle.api.plugins.JavaPluginConvention type has been deprecated. This is scheduled to be removed in Gradle 9.0. Consult the upgrading guide for further information: https://docs.gradle.org/8.2/userguide/upgrading_version_8.html#java_convention_deprecation
at org.gradle.api.plugins.internal.NaggingJavaPluginConvention.logDeprecation(NaggingJavaPluginConvention.java:185)
项目相关配置如下:
- 根目录build.gradle:
plugins { id 'com.android.application' version '8.2.2' apply false }
- app模块build.gradle:
plugins { id 'com.android.application' } android { namespace 'myapp' compileSdk 34 defaultConfig { applicationId "myapp" minSdk 29 targetSdk 34 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 } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-splashscreen:1.0.1' implementation "androidx.preference:preference:1.2.1" implementation 'com.google.android.material:material:1.11.0' implementation 'com.squareup.picasso:picasso:2.71828' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' }
解决方法
虽然你没有直接引入Java插件,但Android Gradle插件(AGP)内部依赖了Java插件的旧约定API,从而触发警告。可以通过以下步骤消除警告:
替换Java版本配置方式
将app模块build.gradle中的compileOptions块移除,替换为Gradle推荐的Java Toolchain配置,避免使用已废弃的约定API:java { toolchain { languageVersion = JavaLanguageVersion.of(8) } }检查并更新第三方依赖
如果替换后仍有警告,可能是部分第三方库使用了旧的Gradle API。尝试将依赖升级到最新稳定版:- 例如Retrofit可升级到
2.11.0,Picasso可升级到2.8
- 例如Retrofit可升级到
升级Android Gradle插件(可选)
将根目录build.gradle中的AGP版本升级到最新稳定版(如8.5.0),新版本会减少对旧API的依赖:plugins { id 'com.android.application' version '8.5.0' apply false }
内容的提问来源于stack exchange,提问作者Darksymphony

