自动上传apk到Google Play的API?

102

是否有任何API或工具可以让我自动上传APK到Google Play? 我想要自动发布定制应用程序到我的帐户,而不需要手动操作或图形界面。

我搜索了一下,但没有找到任何可执行此操作的API(只有 android-publisher,但它不支持发布,尽管其名称含有这个意思)。有人已经解决了这个问题吗?看起来像一个基本的功能?


3
我认为没有,但这是一个有趣的问题。 - Stéphane
8
时代在变化,让评论反映出现在已经有了这样的API。之前的评论和回答现在已经过时了,正确的答案现在是由sharshi提供的。 - Richard Le Mesurier
另请参见:https://dev59.com/72Ag5IYBdhLWcg3wlLui#52374171 - S.D.
对于那些通过网络搜索来到这里只是想要一个答案的人,无论是否离题:Fastlane是一种自动化Play Store和App Store部署的工具。 - Thomas
这里有一个:https://github.com/codebysd/java-play-store-uploader - S.D.
4个回答

66
截至今天,有一个新的官方发布API允许您上传到任何渠道(即alpha、beta...)或更新标题、描述等内容。
从文档中了解到:
  • 通过将APK分配给各种Track (alpha、beta、staged rollout或production)来上传应用程序的新版本
  • 创建和修改Google Play Store列表,包括本地化文本和图形以及多设备截图
欲了解更多信息,请参见:https://developers.google.com/android-publisher/

29
请注意,该 API 仅适用于已发布的应用程序(至少上传了一个 APK)。 - Léo Lam
使用Google进行授权可能会有一些技巧。以下是通过命令行获取令牌的方法:http://superuser.com/questions/606953/bash-oauth-2-0-jwt-script-for-server-to-google-server-applications。附注:那里提到的 .p12 密钥在使用命令“openssl pkcs12 -in my_google_key.p12 -out my_google_key.pem -nodes -clcert”转换为 .pem 之前是无法使用的。 - Vitalii
3
请查看此Gradle插件 - https://github.com/Triple-T/gradle-play-publisher - Sankar V
3
有人知道是否仍然限制只能更新预先存在的应用程序吗? - Ricardo Pedroni
1
@Dokuzov 是的,只有更新。 - sharshi
显示剩余6条评论

23

gradle-play-publisher 是一个Gradle插件,用于将您的APK和应用程序详细信息上传到Google Play商店。

我只需在终端中运行./gradlew publishApkRelease,它就会上传APK和最近更改的摘要。还有其他可用的类似任务。

它使用Google Play开发者API


你好,我是Gradle的新手,gradle-play-publisher说:“一旦你将此插件应用于你的Android应用项目,你可以通过play块进行配置”,那么我需要在哪里添加play块呢? - Aqib Mumtaz
在你的 build.gradle 文件中。 - Carlo Espino
请问您能分享一下您的构建文件吗?我一直在遇到这个异常:“org.gradle.execution.TaskSelectionException: Task 'publishApkRelease' not found in root project”。 - Aqib Mumtaz
我已经在https://dev59.com/G43da4cB1Zd3GeqPuxMX上发布了我的问题。 - Aqib Mumtaz
无论如何,这个项目并不是非常活跃。 - oldergod
为什么你说这不是一个活跃的项目? - Carlo Espino

20

目前没有官方的Google API可用于自动化处理Google Play。(2014年7月之后不再是这样)

您可以创建一个包装Web浏览器并模拟用户行为的脚本:查找HTML字段,输入相关信息,提交页面等。

我们正在开发这样一个开源的Python工具: https://github.com/onepf/AppDF/tree/master/tools/uploader


6
直到2014年7月底,谷歌添加了发布API,这一点是正确的。有关更多信息,请参见sharshi的答案。 - Léo Lam
3
这个回答现在是错误的。 - Richard Le Mesurier

4
我也在这个问题上回答了这个问题,但我想在这里添加相同的评论。如果这样做是错误的(重复答案),请告诉我。

我能够创建一个Gradle插件,使用新的Google Play发布API将应用程序发布到您希望的任何轨道和口味/变体。

请参阅此处的源代码:https://github.com/bluesliverx/savillians-gradle

我正在努力将其发布到Maven Central,以便可以在构建脚本中使用,但是现在您可以从存储库中获取android-publisher子目录,将其放在Gradle构建的根目录中,并将文件夹重命名为buildSrc。 在要发布的Android项目的build.gradle文件中使用以下行:

apply plugin: com.savillians.gradle.androidpublisher.AndroidPublisherPlugin

您可以使用 androidPublisher 块在 build.gradle 文件中设置发布设置。

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。祝你好运,如果有问题,请告诉我,因为这是全新的。


请访问https://dev59.com/lMbss4cB2Jgan1zni2Jw。`gradle androidPublish`是否会生成已签名的apk并上传到Play商店? - Nevin Raj Victor
已回答。这个插件将会做你所需要的。 - bksaville
嗨@bksaville,这个插件支持现有的应用程序吗?我们不能用于新创建的应用程序吗? - Sajith Vijesekara
我发现在创建服务帐户时,角色应该选择“服务帐户”->“服务帐户用户”和“服务帐户令牌创建者”,而不是选择“发布管理器”。 - Maks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接