2014-09-12 37 views
3

根據Google Play服務的不同,推薦的做法是保持Android應用的最大後向兼容性?最大限度地提高Google Play服務的向後兼容性

使用過Android Studio開發人員實現文檔表明對編譯V5 + compile 'com.google.android.gms:play-services:5.+'與我使用似乎最終使用的版本5208000.可用下載在這一點,我得到的錯誤和警告,同時測試應用程序返回:

W/GooglePlayServicesUtil Google Play services out of date. Requires 5208000 but found 5089036 
E/GooglePlayServicesUtil GooglePlayServices not available due to error 2

但是,我對Google Play服務的依賴Admob似乎正常工作。如果您按照Google的建議致電isGooglePlayServicesAvailable()GooglePlayServicesUtil.getErrorDialog(),系統會通知用戶應用程序需要升級才能運行併發送到沒有可用更新的商店。

在其他地方維護向後兼容性意味着編譯支持您需要的功能的最早的API版本。所以,我想與V4 compile 'com.google.android.gms:play-services:4.+'產生的另錯誤:

E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.

搜索周圍的結果表明是虛假報告,可以忽略不計。

如果我針對更新的API版本進行編譯,並且它不存在於設備上,那麼情況會起作用嗎?或者我必須哄用戶升級?針對較舊的API版本進行編譯並假定事情與設備上運行的較新版本正確向後兼容是否更好?

回答

3

我是一個可選擇依賴於Google Play服務的SDK的開發人員,正如您所提到的,我的方法是針對包含我需要的API的最早版本的Google Play服務進行編譯,例如下游客戶不會遇到類似這樣的問題。

如果您需要的API在v4中可用,則可以安全地根據進行編譯,並遵循Google的指示向用戶顯示升級提示。用戶只會看到升級對話框,如果他們正在運行舊版本的v4,或者他們仍然在v3上。無論哪種情況,升級對話框都應該將他們正確引導至Play商店,在那裏確實會有可用的升級。

如果您需要的API僅在v5中可用,請勿使用通配符版本(即5.+)。您應該編譯一個可能很普遍的舊版本,如com.google.android.gms:play-services:5.0.89。使用通配符意味着您將針對您安裝在Android SDK管理器中的最新版本的Google Play服務進行編譯,無論您正在編譯的是哪種計算機/環境,對於我而言,只是感覺錯誤 - 我不'不管是Google建立圖書館,我都很想知道我在編輯我的應用程序。此外,如果您始終使SDK管理器保持更新,那麼無論何時編譯您的應用的發佈版本,然後將其推送到Google Play,您都可能只是針對Play服務的一個版本發佈了一個應用並不普遍,甚至更糟糕 - 甚至還沒有可用於每個設備上的下載,在這種情況下,用戶將獲得對話並且無法升級,就像您在開發過程中看到的一樣。

+0

感謝您的評論,他們重申我的理解。令人困惑的部分是Google文檔爲什麼建議做一些不是最佳實踐的事情,而且實際上存在問題。 – ertyu 2014-09-12 18:37:14