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

Android Studio中Kotlin跨Wear OS模块调用类的问题排查

跨模块调用失败的问题排查与解决

核心结论

包名后缀.presentation本身不会导致跨模块调用失败,真正的问题大概率是模块依赖未配置或目标成员的可见性限制。


1. 先检查模块依赖配置

跨模块调用的前提是目标模块被当前模块依赖,你需要确认wear模块是否正确依赖了app模块:

  • 打开项目根目录的settings.gradle,确保wear模块已被包含(通常会自动添加,但可以检查是否有include(":wear"))
  • 打开wear模块的build.gradle(或build.gradle.kts),在dependencies块中添加对app模块的依赖:
    dependencies {
        // 保留原有依赖,新增下面这行
        implementation project(":app")
    }
    
  • 点击Android Studio的"Sync Now"按钮,让Gradle同步依赖配置

2. 检查目标成员的可见性

如果依赖配置没问题,那要确认app模块test.kt里的User和data是否允许跨模块访问:

  • Kotlin中默认成员是public,但如果显式用了internal修饰,该成员只能在app模块内部访问,跨模块会调用失败,需要改为public(或移除修饰符,因为默认就是public)
  • 示例:确保test.kt中的代码是类似这样的:
    // 正确:public可见性,允许跨模块调用
    class User {
        // ...
    }
    
    val data = "示例数据"
    

3. 关于包名后缀的说明

系统自动添加的.presentation只是包名的一部分,只要你在wear模块的WearMainActivity中正确导入app模块的包路径即可,比如:

// 假设app模块的test.kt在com.example.myapp包下
import com.example.myapp.User
import com.example.myapp.data

包名后缀只是代码组织的一种方式,和跨模块调用的权限没有直接关联。

4. 快速排查流程

  1. 确认wear模块已添加app模块的依赖
  2. 检查User和data的可见性不是internal/private
  3. 验证导入的包路径是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:21:03