为什么生成的 Cloud Endpoints 库会不时更改其版本?

Why does the generated Cloud Endpoints library change its version now and then?

Android Studio 中的 App Engine 项目(默认情况下)配置为生成客户端库,可由 Android and/or iOS 应用程序使用.

Gradle配置为自动生成库:

apply plugin: 'appengine'

appengine {
    downloadSdk = true
    appcfg {
        oauth2 = true
    }
    endpoints {
        getClientLibsOnBuild = true
        getDiscoveryDocsOnBuild = true
    }
}

注意这里没有指定版本。

https://cloud.google.com/appengine/docs/java/endpoints/gen_clients中指定,库名生成为

/target/<yourProjectVersion>.<versionString>-rc-SNAPSHOT.jar

该文档可能仍然来自 Android Studio 的 rc 候选,因为我的库如下所示:

com.mydomain:api:v2-1.20.0-SNAPSHOT

我在一个单独的项目中使用该库:

compile 'com.mydomain:api:v2-1.20.0-SNAPSHOT'

这工作正常,直到 Android Studio 或 gradle 或 Google 或任何更改版本号的人,此处 1.20.0。然后我的应用程序编译中断,直到我在 gradle.

中调整版本

注意:鉴于 App Engine 模块和 Android 应用程序模块在同一个项目中,Android Studio 更改了两个版本并且一切正常。但是,当项目是独立的时,自动构建就会中断。

1.20.0 版本与 Maven 的 appengine 端点客户端库生成包的版本匹配,用于创建您的客户端库。在幕后,它是 运行 Maven 目标 appengine:endpoints_get_client_lib 以构建 JAR/AAR 您的 Android 应用程序所需的。检查您的编译依赖项以查看为 appengine 指定的版本。如果它使用的是末尾带有 + 的版本,那么 Gradle 并且 Maven 可能会下载更新版本的 plugins/SDKs 用于构建您的端点以及所需的库客户端应用程序。

没有记录的方法可以使用 Maven 目标或 Gradle 覆盖此版本信息。但是,您可以使用 AppEngine SDK 中的 endpoints.sh 脚本手动构建库,这样您就可以按照自己的方式设置版本。