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卷展栏的一种方式。