You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android模块无法访问嵌套依赖com.neovisionaries.Adapter问题咨询

问题分析与解决方案

1. 为什么会出现“无法访问com.neovisionaries.Adapter”的错误?

这个问题和你的Async类是不是后台调用完全无关,核心原因是Gradle依赖的可见性规则:
你在模块中使用implementation声明的依赖,只会对当前模块内部可见,不会传递给依赖该模块的主项目。你的Async类继承自com.neovisionaries.ws.client.WebSocketAdapter(来自nv-websocket-client依赖),当主项目的SocketPresenter调用Async的方法时,主项目的编译环境找不到WebSocketAdapter这个类的定义,所以抛出了“无法访问”的错误。

2. 是否需要在主项目中添加该依赖?

不推荐直接在主项目重复添加依赖(会增加维护成本),更优雅的解决方式是修改模块中的依赖声明:将implementation替换为api,这样依赖会自动传递给主项目。

具体修改步骤:

打开你的Android模块的build.gradle(或build.gradle.kts)文件,把依赖声明从:

implementation 'com.squareup.moshi:moshi:1.5.0'
implementation 'com.neovisionaries:nv-websocket-client:2.3'

修改为:

// 如果主项目也需要用到Moshi,就用api;如果只需要传递nv-websocket-client,仅改后者即可
api 'com.squareup.moshi:moshi:1.5.0'
api 'com.neovisionaries:nv-websocket-client:2.3'

补充说明:

  • api:声明的依赖会对所有依赖当前模块的项目可见,相当于旧版Gradle中的compile。
  • implementation:仅对当前模块内部可见,依赖不会传递,能提升编译速度,但会导致依赖该模块的项目无法访问这些依赖的类。

修改完成后,点击Android Studio的「Sync Project with Gradle Files」按钮同步项目,重新编译后,SocketPresenter中的报错应该就会消失了。

内容的提问来源于stack exchange,提问作者Sina Rahimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:49:39