Java GoogleApiClient.connect()';应为接口类型,但发现为虚拟

Java GoogleApiClient.connect()';应为接口类型,但发现为虚拟,java,android,Java,Android,所以我像这样连接到GoogleAPI客户端 googleApiClient = new GoogleApiClient.Builder(context) .addApi(LocationServices.API) .addApi(ActivityRecognition.API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this)

所以我像这样连接到GoogleAPI客户端

        googleApiClient = new GoogleApiClient.Builder(context)
        .addApi(LocationServices.API)
        .addApi(ActivityRecognition.API)
        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)
        .build();
        googleApiClient.connect();
这段代码与我在几个地方使用的代码完全相同,并且运行良好。这和你在他们的教程中看到的没有什么不同。但现在:

java.lang.CompatibleClassChangeError:方法“void” com.google.android.gms.common.api.GoogleApiClient.connect() 应为接口类型,但发现为接口类型 虚拟(中出现“java.lang.reflect.ArtMethod”的声明 /system/framework/core libart.jar)

stacktrace报告的行是:

googleApiClient.connect();
使用play services 8.1

compile 'com.google.android.gms:play-services:8.1.0'

有人知道吗?

这是Play services library 8.1.0中的一个bug。通过降级play services库解决了此问题

改变

compile 'com.google.android.gms:play-services:8.1.0'

错误不再出现。我的其他代码工作正常(如问题中所述,因为他们使用的是旧版本的库),这必须在google发布更新之前完成

更新:
在galex给出另一个答案之前,我写了这篇文章。这是正确的答案。但是,如果您无法找到存在这些版本冲突的库,或者如果您无法更改这些库的依赖关系,那么解决方案是将您的play版本降级到7.8

问题来自您的应用程序所依赖的库之一,该库本身也依赖于Google play服务

该库使用的是旧版本的Google Play Services SDK,它仍然依赖于GoogleAppClient类是一个接口这一事实。这破坏了向后兼容性,因为库的可传递依赖关系

查看您使用的库是否也有8.1.0的新更新版本,或者如果可能,删除该依赖项


10个多小时后为我解决

编译时使用的JAR文件与执行时使用的JAR文件版本不同。谢谢。我做了一次清洁和重建,但仍然没有改变。关于如何确保jar文件得到更新,有什么建议吗?我没有说任何关于清理或重建的内容。这两种方法都不能解决版本控制问题。我有和以前一样的建议。你如何实施这是另一个问题。但你的建议是什么?您只说过“编译时使用的JAR文件与执行时使用的JAR文件版本不同”?我没有看到有人建议我使用Android Studio编译并在手机上运行。无法替换手机上的jar文件。
compile'com.google.android.gms:play services:7.8.0'
works。如果可以的话,尽量避免使用+的最佳实践。我会自己使用,但我们知道这不是一个好方法。我们将永远停留在7.8中?如果您能解释一下为什么需要使用旧版本,那就更好了。我的理由是,我的一个库使用了8.4,另一个库使用了7.8,因此使用+表示在使用时使用任何必要的版本。。。。
compile 'com.google.android.gms:play-services:7.8.+'
      compile 'com.google.android.gms:play-services:7.8.+'
compile 'com.google.android.gms:play-services-maps:7.8.+'