DevOps on Android: 加速 App 从代码到上线(devopsI具推荐极狐Gitlab)

网友投稿 1090 2022-09-25

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

DevOps on Android: 加速 App 从代码到上线(devopsI具推荐极狐Gitlab)

持续集成为出发点

想要达到持续交付,持续集成必须是强制的。在安卓平台上的持续集成已经有一段时间了,为了更清楚的去了解,我们先说一下它的优势。

安卓平台必须采用持续集成方法,是的我说过。确实,持续集成有一些在构建 Android App过程中无法发忽略的好处。在我看来,它的优势在于:

自动化构建:不再只是在我的机器,而是在所有的环境。早失败:一旦代码提交之后就马上构建,这样就保证错误能被及早的发现。构建测试:保证每一个测试用例都能正常运行。不断打包:防止打包过程中的人为错误。快速发布:既然我们对于每一次构建都有信心,那么发布就变得简单了增加信心:最后,我们相信我们的代码,我们的过程,我们减少不良的惊喜。

一个典型的持续集成过程

看看吧,正如你看见的,这个过程很简单并且保证能达成我开始所说的优势。

测试是关键

持续交付: Level++

举例来说,在 Captain Train。我们发布每6周一次,我们都非常小心了。 目前每次发布都要做:* 我们有一个测试阶段* 我们支持 4 个区域设置。* 我们支持 3 种类型的设备(phone, 7 and 9 inches tablets)。* 我们经常检查我们的的 Play Store。* 我们写发行说明。* 我们使用部署功能。* 我们上传了 72 截图(6 screenshots * 4 locales * 3 types)

整个过程非常消耗时间,最近我们想,是时候去把这个过程给自动化了。即使我们的最终目标是减少发布时间。这种感觉非常好,去防止人为的犯错误以及经常的发布发布。我们能掌握整个过程,这样让我们更加有责任心。

在这篇文章,我讲专注于 Java 语言,因为对于安卓开发者来说,这是最容易的。

编写你自己的 App 发布工具

一旦完成,我们必须创建服务帐户关键的凭证:

到现在为止,一切都准备好了。API发现现在,让我们深入到 Java 客户端 API。我们创建了一个单独的 Java 项目为我们的发布工具,我们添加下面的依赖(Maven的中央仓库有):

compile 'com.google.apis:google-api-services-androidpublisher: v2-rev20-1.21.0'

下一个步骤是创建一个 AndroidPublisher。首先我们通过提供 transport client, JSON factory,和 privatekeyid 对应的 private key ID,和 client_email 对应的账户 ID 来实例化一个 GoogleCredential。ANDROIDPUBLISHER 是一个包含了私钥的关键文件。

AndroidPublisher 对象是Google控制台的主入口,他有一个 Edit 方法,允许我们编辑控制台的数据。 要开始一个新的版本,你必须以发起插入请求,并存储它的返回值,你会在每一个后续调用中使用这个返回的 ID。

AndroidPublisher.Edits edits = publisher.edits();AppEdit edit = edits.insert(PACKAGE, null).execute(); String id = edit.getId();

现在我们将改变我们的控制台数据,举例来说改变 listings:

Listings listings = edits.listings();Listing listing = new Listing(). setFullDescription(description). setShortDescription(shortDescription). setTitle(title);listings.update(PACKAGE, id, "en_US", listing).execute();

你也可以上传截图

Images images = edits.images();FileContent content = new FileContent(PNG_MIME_TYPE, file);images.upload(PACKAGE, id, "en_US", "phone5", content).execute();

最后一个例子,让我们上传一个 APK

// APK uploadApks apks = edits.apks(); FileContent apkContent = new FileContent(APK_MIME_TYPE, apkFile); Apk apk = apks.upload(PACKAGE, id, apkContent).execute(); int version = apk.getVersionCode();// Assign APK to TrackTracks tracks = edits.tracks(); List versions = Collections.singletonList(version) Track track = new Track().setVersionCodes(versions); tracks.update(PACKAGE, id, "production", track).execute();// Update APK listingApklistings apklistings = edits.apklistings(); ApkListing whatsnew = new ApkListing().setRecentChanges(changes); apklistings.update(PACKAGE, id, version, "en_US", whatsnew).execute();

我推荐大家使用 API,因为它很完美并且很强大。最后一步,你必须提交你的版本。事实上,到目前为止,谷歌记录您所请求的每一个变化,但是它只会保存您提交的变化。我也建议你尝试提交之前验证您的更改。

edits.validate(PACKAGE, id).execute(); edits.commit(PACKAGE, id).execute();

正如你看见的那样,开始所获取的 ID,就像是一个事务ID 一样。你开始事务之后,通过 insert, update/upload 来处理变化,并且通过 validate 方法验证 ,通过commit 方法提交。一切都如此简单。

讨论

现在我们可以遵循 devOps 原则,甚至对于安卓开发来说有了比较强大的持续交付能力。在 Captain Train 我们选择去写我们自己的发布工具以此来控制重要的每一个步骤。一旦 release 任务执行成功,我们就执行发布工具来发布 App。当然了Jenkin 和 Gradle 也有一些类似的工具可用。

诸如此类的工具能让你简单的通过向 master 或者 release 分支推送代码的方式来发布你的App。这个过程简单、可信赖、节省时间!很明显,这个过程不一定适用于每个团队/公司/应用程序~ ,这取决于你所在团队的具体情况。但是,我要强调的是持续交付应该是每一个团队/公司的目标。一旦达成,它将驱动您走向成功。

上一篇:低成本告警平台搭建和解决方案推荐!
下一篇:免费告警平台开源和接入服务商哪个好?(免费告警平台开源和接入服务商哪个好做)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~