自动将 Beta Android 应用发布到 Google Play 商店
Posted
技术标签:
【中文标题】自动将 Beta Android 应用发布到 Google Play 商店【英文标题】:Automatic publish Beta Android app to the Google Play store 【发布时间】:2014-05-02 11:41:04 【问题描述】:我正在寻找一种方法,可用于从我的 CI 服务器自动将应用程序发布到 Google Play 商店中的 alpha 和 beta 测试流。
我的 CI 设置如下:
-
android 应用是使用 Android Studio 编写的(使用 Eclipse 确实不是我们的选择)。
构建脚本使用 Rake 编写,并运行 Gradle 任务以及 Calabash-Android 测试。
构建服务器是 Teamcity 8+,目前托管在本地(尽管我们可能会迁移到云端的 Jenkins)。
通过***扫描了这个问题的答案,唯一找到的是API to automatically upload apk to Google Play?这个答案已经有一年多了,而且我们都知道一年是软件开发的一生,所以我希望事情可能有所改善。
我还有一个子问题,发布到这两个流后,测试人员需要多长时间才能在商店中看到它们?我听说 24 到 48 小时,考虑到应用发布到生产只需要几个小时,这似乎有点奇怪。
【问题讨论】:
Brand-spanking-new:Google 刚刚提供了发布 API。检查文档@@developers.google.com/android-publisher/#publishing 抱歉 - 还没有完整的解决方案,我自己正在完成设置... 这个问题的状态如何? @pauljriley 你能分享你如何上传apk到play store吗? 我不知道,但是你有没有为此寻找过 Android Studio 插件? 对于那些通过网络搜索来到这里并只想得到答案的人,不管是否离题:Fastlane 是一个自动化 Play Store 和 App Store 部署的工具。 【参考方案1】:编辑
下面的插件不再有效,因为 Google shut down 他们的 API 的旧版本。考虑改用Gradle Play Publisher。
更新:插件现在可以从 maven Central 以 com.savillians.gradle:android-publisher:0.4
的形式使用。将其添加到 build.gradle 中的 buildscripts 定义中,然后按照我的说明应用它。
我也有同样的问题,感谢 @edovino 的评论和 Google Play API 示例,我能够创建一个 gradle 插件,它可以发布到任何你想要的任何风格/变体的轨道。
在此处查看来源:https://github.com/bluesliverx/gradle-android-publisher
我正在努力将它发布到 maven Central,以便它可以在构建脚本中使用,但现在你可以在 repo 中获取 android-publisher
子目录,将它放在你的 gradle 构建的根目录中,然后重命名文件夹到buildSrc
。在build.gradle
文件中为您要发布的android 项目使用以下行:
apply plugin: com.savillians.gradle.androidpublisher.AndroidPublisherPlugin
然后,您可以使用 build.gradle
文件中的 androidPublisher
块设置发布设置。
android
...
androidPublisher
applicationName = "Company-Name-Product-Name/1.0"
packageName = "<package name>"
serviceAccountEmail = "<service account email>"
serviceAccountKeyFile = file('<p12 keyfile - NOT the json file>')
track = "alpha" // default, don't need to specify
variantName = "release" // default, don't need to specify
确保您创建的服务帐户具有“发布管理器”权限,下载 p12 密钥文件并将其放在项目目录中。然后运行这个命令:
gradle androidPublish
这将使用您指定的凭据将其发送到 Google Play。祝您好运,如果您有任何问题,请告诉我,因为这是全新的。
【讨论】:
我目前正在尝试使用这个插件,但是插件和类路径配置不匹配。说找不到那个指定的插件。 它如何知道使用哪个 APK? @user1810737,您是否将其添加到 buildscripts 配置块中,而不仅仅是普通的依赖项?它使用 variantName 来决定要获取哪个 APK。除非您定义自己的变体,否则默认的 release 应该可以正常工作。applicationName
是否需要与开发者控制台中的名称匹配?它甚至可以在任何地方使用吗?
我会注意到,将 P12 私钥保存在您的存储库中并不是一个好主意,因为它(主要归功于 Google Play 发布者 API 的糟糕安全设计)提供了很多 访问您的 Google Play 帐户。如果您必须使用此插件,请将 serviceAccountKeyFile
参数指向由 CI 服务器管理的临时路径(例如,在 Jenkins 中使用 Credentials Binding 插件或 Build Secret 插件)。【参考方案2】:
如果您使用的是Jenkins,Google Play Android Publisher Plugin 可让您自动上传 alpha 或 beta 版本。
例如,您还可以使用它来将 APK 从 alpha 版“提升”到 beta 版,或者从 beta 版到分阶段推出。
还包括多个 APK 支持以及上传(或重复使用)扩展文件的能力。
通过与 Jenkins 中的凭据功能集成,该插件可以安全地访问您的 Google Play 帐户,而无需将私钥签入存储库或类似内容。
【讨论】:
【参考方案3】:现在有一个直接的 CLI 工具,您可以在构建服务器构建步骤中调用:
https://github.com/codebysd/java-play-store-uploader
它使用谷歌发布者 API 并使用新的 JSON 密钥格式。
【讨论】:
以上是关于自动将 Beta Android 应用发布到 Google Play 商店的主要内容,如果未能解决你的问题,请参考以下文章
如何在发布之前对 Android 应用进行 alpha / beta 测试?