Android项目用了这个AndroidRocker:1.0.1版本,编译报错

比特灵 初级 2026-05-04 19:20:25

Could not find com.github.kongqw:AndroidRocker:1.0.1

它这个状态确实不正常,但是另外一台机器(Win)编译这个项目一点问题没有,非常奇怪。

 

 

 

...全文
357 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
AI向善 09-11 10:15
  • 打赏
  • 举报
回复

Could not find com.github.kongqw:AndroidRocker:1.0.1 这个报错看着像依赖坐标写错了,实际上多数情况是仓库没生效。我上周刚在一个老项目上撞过一模一样的,把它和"另一台机器能编"这条线索放一起看,答案基本就锁定在 Gradle 的仓库解析范围上。

先把原理说清楚:com.github.kongqw:AndroidRocker 这种 group 前缀是 GitHub 包的典型形式,它不在 Maven Central,而是发布在 JitPack 上,所以构建时必须有一个 maven { url 'https://jitpack.io'/ } 仓库能被解析到。

很多老教程让你在项目根目录 build.gradle 的 allprojects { repositories { ... } } 里加这行,这在 AGP 7.0 之后可能失效,因为新版本默认走 settings.gradle 里的集中式仓库管理:

// settings.gradle
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)  // 有些模板是 FAIL_ON_PROJECT_REPOS
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }   // 补这一行
    }
}

PREFER_SETTINGS 会优先用这里的配置,FAIL_ON_PROJECT_REPOS 则直接拒绝 project 级仓库。两种情况的表现都是"我在 build.gradle 里明明加了 jitpack,但就是找不到包"。

那另一台机器为什么好的?常见就两个原因。

一是那台机器的 Gradle 缓存里已经有这个包了。路径在 ~/.gradle/caches/modules-2/files-2.1/com.github.kongqw/ ,有缓存就不会发起远程解析,自然不报错。把这份缓存拷到你这台机器,或者删掉缓存强制重新下载,差异立刻能看出来。

二是那台机器的 AGP / Gradle 版本更旧,还在用 project 级仓库配置,JitPack 那行是生效的。

排查顺序建议这样走。

先跑 ./gradlew :app:dependencies --configuration debugRuntimeClasspath ,看 AndroidRocker 有没有被解析出来。报错信息里通常会刷出一串 "searched in the following locations",把搜索过的仓库都列出来,一眼就知道 jitpack 有没有进去。

再确认版本号在 JitPack 上真的存在。JitPack 是按需构建的,第一次请求某个 tag 时它会现场拉代码打包,这期间可能返回 404 或者构建失败。浏览器直接访问 https://jitpack.io/com/github/kongqw/AndroidRocker/1.0.1/ 看构建日志和状态,绿色才说明可用;如果是红色,换个版本或者去 GitHub 仓库页面看 tag 有没有打对。

顺手把离线模式关掉。Android Studio 的 Gradle 面板里如果勾了 Offline work(新版叫 Offline Mode),JitPack 这种需要远程解析的包会直接失败。国内网络访问 jitpack.io 不稳的话,在 gradle.properties 里配好代理,或者用镜像转发。

改完执行 ./gradlew --refresh-dependencies ,必要时先 ./gradlew clean 。

如果折腾下来 JitPack 这条路始终不通,还有个更省事的方案:AndroidRocker 本质就是一个自定义摇杆 View,源码量很小。把 RockerView.java 和相关资源直接 vendored 到自己项目里(放到 app/src/main/java 下对应的包名目录),然后把远程依赖删掉。对小体量的 UI 组件来说,源码内联比绕 JitPack 的构建和网络问题更稳,也省掉了以后 JitPack 挂掉的风险。

一句话总结:这个报错多半不是依赖坐标写错,而是 settings.gradle 的 dependencyResolutionManagement 里缺 jitpack,再加上"另一台机器有缓存"造成的假象。你要是还卡在别的报错上,评论区贴一下 gradle 版本,我帮你看看。

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧