【问题标题】:Specify AppEngine version in Android application在 Android 应用程序中指定 AppEngine 版本
【发布时间】:2013-08-14 19:12:05
【问题描述】:

我正在尝试使用 Android 应用程序访问我的 AppEngine 应用程序的非默认版本。为了清楚起见,我的默认版本是1,我的新版本是2。请注意,我不能(还)让版本 2 成为默认版本。

来自文档:

该元素包含应用程序代码的最新版本的版本标识符。版本标识符可以包含小写字母、数字和连字符。它不能以前缀“ah-”开头,并且名称“default”和“latest”是保留的,不能使用。 AppCfg 在上传应用程序时使用此版本标识符,告诉 App Engine 使用给定标识符创建应用程序的新版本,或者使用给定标识符替换应用程序版本(如果已存在)。您可以使用在 URL 中使用“-dot-”作为子域分隔符的 URL 来测试应用程序的新版本,例如http://_version_id_-dot-_your_app_id_.appspot.com。您可以使用管理控制台选择您的用户看到的应用版本,即“默认”版本。

很遗憾,Android 应用程序不直接使用此 url。我的应用使用的 id 是:

final String PROJECT_NUMBER = "123456789012";
final String WEB_CLIENT_ID = "123456789012-abcdefghijklmnopqrstuvwxyz012345.apps.googleusercontent.com";
final String ANDROID_AUDIENCE = WEB_CLIENT_ID;

PROJECT_NUMBER 用于 GCM 注册,ANDROID_AUDIENCE 使用如下:

mCredential = GoogleAccountCredential.usingAudience(context, "server:client_id:" + Ids.ANDROID_AUDIENCE);

如何让我的 Android 应用程序与我的 AppEngine 应用程序的 2 版本通信?

【问题讨论】:

  • 听起来您正在使用其中一种 Google Eclipse 插件工具来生成您的 Android 代码。您是否正在构建“App Engine Connected”项目?我对此不太熟悉,似乎 Endpoints 是较新的(替代品?)。至少使用 Endpoints 生成的代码,您可以指定一个“主机名”,您可以在其中指定适当的版本。见这里:developers.google.com/appengine/docs/python/endpoints/…
  • 谢谢,这确实是我需要看的地方!

标签: android google-app-engine


【解决方案1】:

@dragonx 提供了一个 Python 链接,但是,我使用的是 Java。

this page 上,它表示您可以定义rootversion。这就是我为完成这项工作所做的工作:

  • versionroot 添加到我的端点类:

.

@Api(version = "2", root="https://2-dot-my_app_id.appspot.com/_ah/api", name = "deviceinfoendpoint", clientIds = (...) )
public class DeviceInfoEndpoint {
  • 生成客户端库
  • 部署到 AppEngine。

现在,通过我的 DeviceInfoEndpoint 类进行的所有调用都发送到我的 AppEngine 应用程序的 2 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多