Android 如何从Jenkins/Hudson上传APK到Play Store?

Android 如何从Jenkins/Hudson上传APK到Play Store?,android,jenkins,continuous-integration,google-play,continuous-deployment,Android,Jenkins,Continuous Integration,Google Play,Continuous Deployment,我使用Jenkins实现了一个持续集成管道,但作为最后一步,我希望Jenkins将已签名的APK文件部署/上传到Google Play Store和AndroidPit。我找了Jenkins/Hudson插件,但只找到了两个:一个用于Appaloosa,一个用于Zubhium 我在Google Play和AndroidPit上都有一个可用的开发者帐户,可以手动上传Jenkins制作的APK。但我的问题是:有人知道如何教Jenkins将APK上传到上面提到的应用商店吗?(例如,通过shell脚本?

我使用Jenkins实现了一个持续集成管道,但作为最后一步,我希望Jenkins将已签名的APK文件部署/上传到Google Play Store和AndroidPit。我找了Jenkins/Hudson插件,但只找到了两个:一个用于Appaloosa,一个用于Zubhium


我在Google Play和AndroidPit上都有一个可用的开发者帐户,可以手动上传Jenkins制作的APK。但我的问题是:有人知道如何教Jenkins将APK上传到上面提到的应用商店吗?(例如,通过shell脚本?我只能为谷歌的Play Store说话。有一种方法,但请注意,它并不漂亮,您必须编写解决方案。我现在正在写一篇学士论文来解决这个问题——“Android应用程序的持续交付”。我的解决方案是我的,这意味着我没有提出拥有完美解决方案的主张,但我可以说这是一个相当有效的原型

我发现:

  • 第一个解决方案是没有。谷歌提供了一个新的平台,但它缺乏上传内容的功能。似乎他们已经在考虑制作这样一个API,但它只提供应用内计费控制

  • 第二种解决方案是使用ApacheHttpComponents库,它允许您为Google Play开发者控制台实现自己的客户端,但缺少JavaScript解释器。。。有几种实现或添加方法。当然,这不是最简单的方法

  • 我正在研究的第三个解决方案是使用Web浏览器自动化框架。所以基本上我是从那些游戏商店页面和对话中创建的。之后,您可以创建一些工厂来维护控制这些页面对象的“路径”

在我看来,使用它们您有两个选项,例如使用“不可见”浏览器进程(如FF或Chrome)和另一个我使用的是使用可见浏览器进程来执行用户操作。别忘了使用异常处理程序,它会在使用时扫描网页以查找出现的错误

有很多陷阱,因为谷歌可能会改变设计,让你的软件崩溃。但也有一些方法可以解决这个问题并创建一个XML,其中包含有关应用程序的所有有价值的信息,这在继续下一步时非常方便


你可以。您可以将其加载到持续集成服务器中。我希望我能帮你一点忙。

我相信PlayStore API目前没有包括它,以减少对系统的压力并避免滥用

我相信我们将来可能会在gradle插件和IDE中看到这一点。 在我们等待谷歌决定开放API的时候,这里有一个解决方案,非常简单,我不得不提出:

如果你有一个GUI,在最后一步使用GUI自动化。

Jenkins有一个使用,在Google I/O 2014上宣布

谷歌还发布了一个新的API,以帮助利用该API

有关API的更多信息,请参见:

自从Google Play发布上传API以来,已经制作了一个插件:

我还没有试过,但看起来正是我们想要的

还有其他插件声称也有同样的功能(谢谢@mdt)

  • 404此页不存在

Jenkins的Google Play Android Publisher插件很好。但是,它不支持上传描述和屏幕截图(至少目前是这样)

我找到了一个不错的Gradle插件,叫做。它支持上传apk、更新元数据和上传屏幕截图。只需几个步骤即可完成设置。

首先在浏览器中转到,打开应用程序页面,然后查找允许新电子邮件地址上载APK的选项。如果不存在,则可能意味着您不是该Play Store帐户的管理员,您需要请求管理员为您添加该帐户(基于每个应用程序)。要找到要添加的电子邮件地址,请转到并为任何现有的Google developer服务帐户创建JSON密钥,或者使用JSON密钥创建新的服务帐户。请注意与您已创建(或将创建)JSON密钥的服务帐户关联的电子邮件地址。它很可能是在gserviceaccount.com上发布的。这是一个电子邮件地址,必须由对您的Play帐户具有管理员访问权限的人授予上载APK的权限

完成后,通过
wget下载https://gist.githubusercontent.com/mix3d/665f4ab329b4482297a2f425ebba402c/raw/0949385dd6c80d0701170746b1bd5fd479303412/basic_upload_apks_service_account.py
并通过
pip安装google api python客户端安装依赖项(或根据需要
sudopip安装google-api-python客户端)

然后在自动脚本中,您可以使用(例如)
python basic\u upload\u apks\u service\u account.py-t beta-p org.example.MyApp-s JSON\u file\u I\u made.JSON-a MyApp.apk
(假设您的JSON文件、APK和
basic\u upload\u apks\u service\u account.py
都在当前目录中,并且
pip安装已在该机器或容器上完成)


我强烈建议上传到beta版(因此上文中的
-t beta
),而不是直接上传到生产版。以防万一有什么东西坏了,它会以某种方式上传到APK版。我认为最后一次的“发布到生产版”应该总是由人来完成。但是如果你真的想自动完成,你可以使用
-t production

我向谷歌询问,他们回答说Play Store不提供此功能。有人有想法吗?如果有人正在寻找解决方案,请快速更新。Go的最新版本OglePlayDeveloperAPI现在允许对Google Play列表进行更改。请看:哦,这听起来很痛苦,而且非常肮脏:)你的论文怎么样