升级Android Gradle Plugin到7.0后自定义插件报包不存在错误如何解决
AGP 7.0 自定义插件
com.android.annotations包不存在修复方案 报错原因
AGP 7.0 版本正式移除了内置的com.android.annotations相关依赖包,原有基于AGP 4.x版本开发的自定义插件如果引用了该包下的注解,升级后就会触发包不存在的编译错误。
修复方案
你可以根据需求选择以下任意一种方案:
方案一:替换为通用非空注解(推荐)
替换原有注解的导入语句,通用注解兼容性更好,不会跟随AGP版本变动出现依赖丢失问题:
- 删除代码中的
import com.android.annotations.NonNull;导入行 - 替换为以下任意一种非空注解:
- JetBrains官方注解:
import org.jetbrains.annotations.NotNull;,需要在自定义插件的构建配置中添加依赖:
dependencies { implementation 'org.jetbrains:annotations:24.1.0' }- JDK自带注解:
import javax.annotation.Nonnull;,无需额外添加依赖
- JetBrains官方注解:
修改后的apply方法代码示例:
@Override public void apply(@NotNull Project project) { project.getPluginManager().withPlugin("com.android.library", plugin -> { //原有逻辑无需改动 }); }
方案二:补回AGP移除的注解依赖
如果不想修改原有代码的注解引用,直接在自定义插件的构建配置中手动添加被移除的注解依赖即可:
dependencies { implementation 'com.android.tools:annotations:30.4.2' }
该依赖包包含了原有的com.android.annotations.NonNull类,添加后原有代码无需任何改动即可正常编译。
方案三:直接删除非空注解
如果你不需要编译期的非空检查逻辑,可以直接删掉apply方法参数前的@NonNull注解,不会影响插件的正常运行。
内容的提问来源于stack exchange,提问作者alphanso
相关产品推荐
相关产品推荐

