Android gradle 将 android gradle 插件更新到 7.0 后出现自定义插件错误

Android gradle custom Plugin error after updating android gradle plugin to 7.0

以下是我的自定义插件代码

import com.android.annotations.NonNull;
import com.android.build.gradle.LibraryExtension;

import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;


public class CustomPlugin implements Plugin<Project> {

@Override
public void apply(@NonNull Project project) {
    project.getPluginManager().withPlugin("com.android.library", plugin -> {
        //code here
    });
}

}

将 android gradle 插件从 4.2.1 升级到 7.0 以上自定义插件代码显示 错误:包 com.android.annotations 不存在

如何解决这个错误?

在android gradle插件7.0中,推荐使用AndroidX Libraries。首先,在您的 gradle.properties 文件中,通过添加

启用 AndroidX
android.useAndroidX=true

还添加这些依赖项(以设置其他 androidx 库),

implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

同步您的 gradle 文件,然后将导入 com.android.annotations.NonNull 更改为 androidx.annotations.NonNull

因为我和 alphanso 在同一个项目工作,并从他那里接手了 AGP 升级,所以这是我最终发现的:

代码位于我们项目的 .buildSrc 目录中,并使用 Gradle 插件 java-libraryjava-gradle-plugin.

在那里编译

因此 android.useAndroidX=true 没有效果,因为这仅在您使用 Android 插件时有效,com.android.librarycom.android.application

类 突然丢失的根本原因(我们在 com.android.build 的子包中也丢失了其他一些)在其他地方:

随着 AGP 7.0,com.android.tools.build:gradle 的大多数库依赖项从“编译时间”更改为“运行 时间”,您可以在此处看到:

AGP 4.2.2: https://mvnrepository.com/artifact/com.android.tools.build/gradle/4.2.2

AGP 7.0: https://mvnrepository.com/artifact/com.android.tools.build/gradle/7.0.0

这意味着切换到 AGP 时 7.x 您必须手动添加缺少的依赖项。

在我们的例子中添加

implementation "com.android.tools:common:30.0.3"

解决了问题。