1

場景:我在市場上運行版本代碼5的Android應用,使用Google Cloud Endpoints和Objectify調用App Engine版本2(默認)。我需要對Android應用程序App Engine後端進行更改。根據Android應用版本使用特定應用引擎版本

問題:新版本的Android應用(版本6)不適用於App Engine的舊版本2,因爲返回的數據會有所不同。我的Android應用程序的用戶將慢慢開始更新到新版本,要求App Engine後端的舊版本和新版本都可以使用。

問題:舊版本的Android應用程序可能調用較舊版本的App Engine,而較新版本的Android應用程序則會調用較新版本的App Engine。 Android客戶端可以檢查其版本並更改分別發出的請求,或者App Engine是否可以檢查請求並將其指向適當的版本?還是有一種替代方法來解決我所缺少的這種情況?

Android應用程序僅在alpha測試中與< 20個用戶進行比較,因此,如果我將舊版本更新爲所有更新版本,則不會產生任何不利影響。儘管爲將來的更新提供解決方案並不會暫時導致應用程序無法使用,但這將非常好。也許我可以定製我的代碼來處理這些情況。洗耳恭聽。謝謝

回答

2

這很多,比客戶端代碼更容易更新服務器代碼。在遷移API時,您通常希望服務器說出兩個API版本,直到可以升級您的大部分客戶端。根據您的觀衆,這可能需要幾個月。

建立基於服務器響應強制升級到客戶端的能力是個好主意。

您通常不希望有很多版本的服務器代碼同時運行。數據遷移將很快變得無法管理。一次處理單個服務器端版本轉換。

0

特別是對於提供端點後端的GAE應用程序,Endpoints API版本設計完全是爲了處理像您提到的那樣的遷移。你可能想要通過Deploying to multiple app versions

一般(端點外),可以實現一個優雅的客戶端升級的故事基礎上,GAE自動routing via URL,使機器達到運行模塊代碼的特定版本模塊實例(如果可用):

https://version-dot-module-dot-app-id.appspot.com 
http://version.module.app-id.my-custom-domain.com 

將請求發送到指定模塊和版本的可用實例。

1

謝謝你的建議。

事實證明,我並沒有完全理解後端API版本和App Engine實例版本之間的區別。在重新閱讀文檔幾次並梳理SO尋找線索後,我遇到了thisthis github問題有關的答案。

現在這個數字更有意義。

enter image description here

通過在端點類註釋遞增端點API版本,那麼重建客戶端庫,在Android客戶端(新版)然後調用新的API版本。同時,運行舊API版本的所有現有Android客戶端仍將能夠調用較舊的後端API版本。增加App Engine版本是管理這些API卷展欄的一種方式。