Google Play Services IncompatibleClassChangeError

目錄

之前工作在接第三方登入 SDK 時,遇到 GoogleApiClient.connect()' was expected to be of type interface but was found to be virtual 這個錯誤。

原因

查一查發現是第三方登入 SDK 使用的 Google Play Services 是 7.8.* 以下的版本,而我是引用 8.* 以上的版本。

Google Play Services Android SDK 的 GoogleApiClient 自 8.1 版(2015/08)開始是 abstract class,在此之前是 interface。

解決方法

兩種解決方法。 一是請對方升級 Google Play Services 程式庫, 二是專案的 com.google.android.gms:play-services 只能用 7.8.0。

後來我們是採用方法一,而對方開發者也知道引用的 Google Play Services SDK 太舊要處理,所以都順便解決了,至少升到 8.4.0。

References

分享 :

相關文章

Unity Resources 系統的最佳實務做法

Resources 的最佳做法 別用 Resources 別用 Resources 別用 Resources 因為很重要,所以要講三次。為什麼呢?理由有三。 細粒度的記憶體控管會更困難。 不當使用 Resources 資料夾會導致 app 啟動時間、建置時間更久。這問題在 Resources 檔案愈多,愈是明顯,尤其是規格比較差的行動裝置。app 在 splash screen 前黑畫面太久的其中一個原因正是這一點。 Resources 內的 assets 無法動態下載更新,也沒辦法處理 asset 變體。例如貼圖有分 sd、hd 版。 Unity 的程式開發人員,從 Unity 5 開始,應該要發展一套能夠方便使用 AssetBundle 的系統,如此便能不再倚賴 Resources。

更多

Unity 5 AssetBundle 基礎

前言 一直以來,Unity 的 AssetBundle 機制與不透明的資訊一直為人所詬病(社群論壇有些批評,例如 asset 序列化管理架構、機制本身就不良,來源就不附上了),以往大部分的資訊都只是瞎子摸象試出來的結果,大都未經 Unity 官方證實。 直到 Unity 4、5 開始,特別是從 Unity 5.x 開始,官方才比較願意公開詳細地說明 Unity AssetBundle、檔案資源系統及 Resources 機制。

更多