2

由於更新了我的SDK管理器包,我的谷歌播放服務一直沒有工作。Android Google Play服務已損壞? isConnected()拋出錯誤

這是導致我的三星S5運行5.0,HTC One_M8運行5.0.1和我的Nexus 5運行6.0(Android M預覽)崩潰。

java.lang.IncompatibleClassChangeError: The method 'boolean com.google.android.gms.common.api.GoogleApiClient.isConnected()' was expected to be of type interface but instead was found to be of type virtual (declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar) 

在Samsung Mega運行4.4.2和運行4.4.4的Nexus 4上運行相同的代碼,我得到這個錯誤。

java.lang.NoSuchMethodError: com.google.android.gms.common.api.GoogleApiClient.isConnected 

這些錯誤纔開始從SDK管理器的最新更新之後發生的事情,我非常定期更新和我的最後一次更新之前,我注意到這個問題是在10月5日,2015年

當前SDK

  • 支持Android庫:21
  • Android的支持庫:23.0.1
  • 谷歌遊戲服務:27
  • Android SDK工具:24.4
  • 的Android SDK平臺的工具:23.0.1
  • Android SDK中內建工具:23.0.1

一切更新之前完美。有沒有什麼辦法解決這一問題?我花了好幾個小時試圖弄清楚我是否在某個地方搞砸了某些東西,但是自上次運行以來,我的項目並沒有涉及谷歌播放服務的更改。我已經與某人確認,使用與我正在使用的完全相同的代碼庫(我們使用git),他們尚未更新SDK軟件包,我們的代碼仍然適用於他。我可能不得不恢復我的SDK工具,因爲如果它是一個錯誤,我不能等待可能的修復。我得到的更新是非常新的,但我不能是唯一一個有這個問題....

任何想法如何解決這個問題?

謝謝!

+3

查看[發佈說明] 2015年9月部分的最後一個部分(https://developers.google.com/android/guides/releases),因爲這似乎與您所看到的有關。 – CommonsWare

+3

同時查看[this reddit post](https://www.reddit.com/r/androiddev/comments/3mehbb/breaking_changes_in_google_play_services_81/)。如果您使用的庫也取決於Google Play服務,並且庫依賴關係未更新但您自己是,它會拋出您提到的錯誤。 – NoChinDeluxe

+0

非常感謝!這看起來確實是我的問題。我編寫的軟件是其他人在其應用程序中嵌入的庫。我們無法控制他們使用的Google Play服務的版本。所以它看起來像我需要以某種方式以編程方式檢查他們現在正在編譯的應用程序中的哪個版本的GPS,然後根據版本有兩個不同的類來支持GPS?有沒有辦法做到這一點?嘆息 – Dave

回答

1

好吧,我已經發現了我的問題確實是什麼。奇怪的是,GoogleApiClient中的isConnected()方法會中斷,而所有其他靜態方法可以毫無問題地被調用。但是當你有一個API更新被宣佈爲「突變」時,你會期望事情不再有效。

那麼在10月7日星期三,我注意到另一個更新,我終於有機會測試,問題不再存在。所以看起來這是他們「突變」中的一個錯誤。幸好Google很快就修復了這個問題。但它現在起作用了。所以我基本上恢復了以前的方式。乾杯!

+0

在我的情況。我得到了更新的谷歌播放服務庫becozoz ..我降級到com.google.android.gms:play-services:7.5.0' – John