Android Studio运行Signal应用时Gradle报错找不到content()方法
Signal项目在Android Studio构建时报content()方法找不到的解决方法
用户尝试在Android Studio中运行Signal应用,项目构建流程被阻断,无法完成正常运行。
报错信息
评估根项目“Signal”时出现问题。 > 在org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository类型的对象上,无法找到匹配参数[build_ln9dya767x5ojwb6lu9wg470$_run_closure1$_closure2$_closure4$_closure5@1a6eaf53]的content()方法。
关联触发代码
经定位,报错来自项目根目录build.gradle中配置的content相关逻辑,对应代码片段如下:
buildscript { repositories { google() mavenCentral() jcenter { content { includeVersion 'org.jetbrains.trove4j', 'trove4j', '20160824' includeGroupByRegex "com\\.archinamon.*" } } } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' } }
问题本质
content()是Gradle 4.0版本才新增的仓库内容过滤API,当前项目使用的AGP 2.3.3适配的是Gradle 3.x系列版本,这类旧版本的Maven仓库实现类本身就没有content()方法的实现,调用时自然会抛出方法找不到的异常。
可落地的解决方式
- 适配现有低版本构建环境:删掉jcenter配置里的content代码块,把原来的带闭包的jcenter配置改成普通的无参
jcenter()调用就行。这个改动不会让原本需要从jcenter拉取的两个依赖拉取失败,只是没法限定jcenter仓库的拉取范围,对老项目的正常构建没有实质影响。 - 如果确实需要保留仓库内容过滤的能力:需要把项目的Gradle版本升级到4.0及以上,同时配套升级对应的Android Gradle Plugin版本,不能再继续用2.3.3的老版AGP。升级时要逐行核对老项目的依赖配置,避免出现新的版本冲突。
内容的提问来源于stack exchange,提问作者user1234
相关产品推荐
相关产品推荐

