安卓磨损 : how to share code between the wearable and handheld modules?

标签 android android-gradle-plugin wear-os

我正在制作具有 Wear 功能的 Android 应用。

我想在可穿戴和手持模块之间共享一些代码。具体来说,我想分享使用 Google Play Services 类的通信代码,例如com.google.android.gms.common.api.GoogleApiClient

做到这一点的明显方法是拥有一个模块(我称之为common)并在手持和可穿戴模块中添加对它的依赖。

由于这个通用模块使用了 Play 服务,我需要让它依赖于 com.google.android.gms:play-services

我不确定版本号应该填什么 - 官方文档 here说要使用 5.0.77,但这不起作用,因为最新的 SDK 在任何地方都没有这个版本,而是带有 5.0.895.2 .08

如果我使用 5.0.89,Wearable 应用程序无法运行,并出现以下错误:Google Play 服务已过期。需要 5089000 但找到 5077534。 watch 上的版本比我以前编译的版本旧。

通用模块可以依赖于 com.google.android.gms:play-services-wearable 而不是依赖于 com.google.android.gms:play-services > 但随后构建时出现冲突,因为手持模块依赖于 com.google.android.gms:play-services,并且这两个 Artifact 使用相同的包名 (com.google .android.gms),因此 gradle 构建失败。

解决方案是什么?

.

编辑 讨论了一下,让我的问题更清楚。

为了能够在我的 common 模块中使用通信 API,我有两个选择:

  1. 使通用依赖于com.google.android.gms:play-services
  2. 使 common 依赖于 com.google.android.gms:play-services-wear

⇒ 解决方案 1 不起作用,因为可用于开发的版本 (5.0.89) 比 watch 上的版本 (5.0.77) 更新。

⇒ 解决方案 2 不起作用,因为 handheld 模块已经依赖于 com.google.android.gms:play-services,这与 com 冲突。 google.android.gms:play-services-wear.

最佳答案

我几天前遇到了同样的问题。我的共享模块也依赖于 com.google.android.gms:play-services,所以 Gradle 拒绝构建并一直对我唠叨:

Error: more than one library with package name 'com.google.android.gms

我将这一行添加到我的mobile 项目的 gradle 文件中,错误神奇地消失了:

compile(project(':sharedModule')) { transitive = false }

关于安卓磨损 : how to share code between the wearable and handheld modules?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343457/

相关文章:

android - 计算布局中的可见元素

android - 我的 NDK 项目因 CPU 架构相关问题而无法编译

material-design - Android Wear 2.0 风格的开关

android - 如何从手机启动android wear Activity

Android Wear DotsPageIndicator 第一次淡化而不是始终可见

java - 在 libGDX 上滑动

android - 响应式 JobScheduler

android - 如何减少从 SQLite 游标获取数据的时间?

android - 库 com.google.android.gms :play-services-basement is being requested by various other libraries at [[15. 0.1,15.0.1]],但解析为 16.0.1

android - 使用 gradle maven-publish 插件导出的 Kotlin Android 库模块不添加依赖项