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. 快速排查流程
- 确认wear模块已添加app模块的依赖
- 检查
User和data的可见性不是internal/private - 验证导入的包路径是否正确
内容的提问来源于stack exchange,提问作者hk22
相关产品推荐
相关产品推荐

