我正在制作具有Wear功能的Android应用程序。
我想在可穿戴设备和手持设备模块之间共享一些代码。具体来说,我想共享使用Google Play服务类的通信代码,例如
显然的方法是创建一个模块(我称其为
由于此公共模块使用Play服务,因此我需要使其依赖于
我不确定版本号应该填什么 - 官方文档here建议使用
如果我使用的是版本号为
我想在可穿戴设备和手持设备模块之间共享一些代码。具体来说,我想共享使用Google Play服务类的通信代码,例如
com.google.android.gms.common.api.GoogleApiClient
。显然的方法是创建一个模块(我称其为
common
),并在手持设备和可穿戴设备模块中添加对它的依赖。由于此公共模块使用Play服务,因此我需要使其依赖于
com.google.android.gms:play-services
。我不确定版本号应该填什么 - 官方文档here建议使用
5.0.77
,但这不起作用,因为最新的SDK中没有这个版本号,而是使用了5.0.89
和5.2.08
。如果我使用的是版本号为
5.0.89
,则Wearable应用程序无法正常工作,并出现以下错误:Google Play服务已过期。需要5089000但找到5077534
。手表上的版本比我用于编译的版本要旧。
通用模块不应该依赖于com.google.android.gms:play-services
,而应该依赖于com.google.android.gms:play-services-wearable
,但在构建时会发生冲突,因为手持设备模块依赖于com.google.android.gms:play-services
,而这两个构件使用相同的包名(com.google.android.gms
),因此gradle构建失败。
解决方案是什么?
.
编辑 经过一些讨论,为了使我的问题更清晰。
为了能够在我的common
模块中使用通信API,我有两个选择:
- 使
common
依赖于com.google.android.gms:play-services
- 使
common
依赖于com.google.android.gms:play-services-wear
⇒ 解决方案1不可行,因为开发可用的版本(5.0.89)比手表上的版本(5.0.77)更新。
⇒ 解决方案2不可行,因为handheld
模块已经依赖于com.google.android.gms:play-services
,这与com.google.android.gms:play-services-wear
冲突。
play-services-wearable
,由于您的移动模块依赖于公共模块,因此它也会传递地依赖于它。因此,它不能再依赖于play-services
。正确吗? - BoD'com.google.android.gms:play-services-wearable:+'
作为依赖项会包括'com.google.android.support:wearable:+'
。 - Eliezercom.google.android.support:wearable
没有问题。我现在将在原问题中添加澄清,以使其绝对清晰 :) - BoD