android - 将android gradle插件更新到7.0后Android gradle自定义插件错误
问题描述
以下是我的自定义插件代码
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 不存在
如何修复此错误?
解决方案
当我与 alphanso 在同一个项目中工作并从他那里接管了 AGP 升级时,我终于发现了以下内容:
代码位于.buildSrc
我们项目的目录中,并使用 Gradle 插件java-library
和java-gradle-plugin
.
因此android.useAndroidX=true
没有效果,因为这仅在您使用 Android 插件com.android.library
或com.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"
解决了这个问题。
推荐阅读
- frontend - Haproxy 为来自绑定 IP 地址和端口的请求返回连接重置
- git - Visual Studio 2019 不会将添加的文件暂存到 Git 存储库
- macos - 在 mac-os 上安装 Home-brew
- javascript - .save() 功能即使在使用 .markModified() 后也不起作用
- r - R studio 环境中的观察但清空数据框
- c - 如何从 PL/SQL 调用 C 函数
- javascript - JS - 元素的异步文本设置
- c# - 如何中止 CLRThread?
- javascript - 如何解析包含混合字符串和数字的 JSON 对象的一部分?
- python - 了解 TypeVar 的用法