前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android module发布管理插件

Android module发布管理插件

原创
作者头像
whp
修改2018-11-21 11:38:39
1.7K0
修改2018-11-21 11:38:39
举报
文章被收录于专栏:个人技术分享个人技术分享

Android module发布管理插件

最近对发布Android SDK到jcenter的流程有点想法,历经一点点艰辛,做了一款Android Studio插件,希望能够使发布流程更简单友好。

真正去做这款插件时,才发现艰难。主要是因为 IntelliJ IDEA 插件开发的资料极少,包括如何在插件中获取Android工程信息、如何执行gradle任务等等。

目前完成了一个版本,有待完善。项目地址:http://git.code.oa.com/rongerwu/TCAndroidProjectManager

起因

Iot架构图.png
Iot架构图.png

做物联网SDK开发,如图所示,整个项目包含多个SDK,层层引用,每个SDK对外发布到jcenter。

一点小问题

原来的发布流程依赖于python脚本执行gradle命令,其实也是蛮简单的,也很灵活:

  1. 命令行找发布脚本,输入要发布的module名。
  2. 输入参数版本号。首先得去build.gradle里看一下当前的版本号。
  3. 选择是否上传到jcenter,或者只是install到本地。

但是,也存在一些小问题,特别是module比较多的情况下。

  1. python脚本跟Android Studio等IDE是天然割裂开的,虽然可以通过IDE自带的命令行工具去执行命令。
  2. 以上过程包含了手动输入的过程(module名,版本号),因为module较多而容易出错。
  3. 没有module详细信息的展示,比如无法直接看到当前的版本号,也没有module依赖其他module的关系展示。

比如 IotSDKAccount 依赖于 IotSDKApiClient 和 IotSDKCore,通常开发的时候是用依赖本地module的方式(如下代码所示)引入的,有时候为了测试jcenter上的版本改成依赖jcenter后忘记改回依赖本地,发布的 IotSDKAccount 就可能依赖了错误的module版本。如果有相关的module依赖提示会好很多。

代码语言:txt
复制
//依赖本地module
implementation project(path: ':IotSDKApiClient')
//依赖jcenter
implementation 'com.tencent.qcloud:iot-android-sdk-apiclient:1.0.6'
做个工具

因为以上问题,萌生了做一个傻瓜式发布工具的想法,具备以下几点:

  1. 使用简单。
  2. 尽量少的手动输入。
  3. 尽量友善且全面的提示。

经过

过程比较折腾,前后花了一周多时间。一开始想通过gradle插件来了实现,一番调研后,发现gradle插件能做所需要的业务逻辑,但是没法做界面展示。后面把目光瞄准IntelliJ IDEA 插件,一度万脸懵逼。

使用

如何编译打包及安装插件请查看项目README

安装完成后,侧边栏有一个TCAPM按钮,用于弹出窗口展示项目所包含的modules。Android Studio->Preferences->Other Settings->TCAPM 是插件的配置窗口,目前可配置bintray的user和key,用于发布module到jcenter。

publish.gradle及配置module的build.gradle

目前无法直接使用插件发布module到jcenter,需要配合publish.gradle以及对每个module的build.gradle做一点点配置。

在每个module的build.gradle底部添加artifactId及artifactDesc,并且apply 项目中的puglish.gradle,例如:

代码语言:txt
复制
project.extensions.add('artifactId', 'iot-android-sdk-account')
project.extensions.add('artifactDesc', 'the tencent cloud iot suite account android sdk')

apply from: '../../QCloudIotCore/publish.gradle'

artifactId和artifactDesc是publish.gradle中所需要的,publish.gradle提供了gradle task供本插件调用。

配置窗口
配置窗口
配置窗口

配置发布到jcenter所需的user和key,后续可以在这里添加更多配置。

侧边栏
侧边栏
侧边栏

侧边栏展示项目所包含的modules以及版本号。版本号可编辑,publish按钮用于弹出发布确认窗口,refresh按钮用于刷新modules信息。

当编辑版本号后,新的版本号以红色字体展示。点击publish可发布所编辑的版本。

当确认发布后,module的build.gradle中的versionName会自动对应修改,versionCode也会按照一定规则自动修改(如versionName"1.2.6"对应的versionCode是 1002006)。

发布确认窗口
发布确认窗口
发布确认窗口

窗口展示当前module所依赖的modules及版本号,可选择是否install到本地及发布到jcenter。

发布结果
发布成功
发布成功
发布成功
发布失败
发布失败
发布失败
日志
日志
日志

不管成功或失败,都可以在右下角的 Event Log 查看运行日志。

其他

插件是我们工作的好伙伴,能够实现强大的功能。目前完成了第一个版本,实现基础的发布功能,也遗留一些不足:

  • 目前暂不支持配置了flavor的module。(能实现)
  • 中间过程日志不能及时输出,需等待执行发布结束后才能一并输出到Event Log。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Android module发布管理插件
    • 起因
      • 一点小问题
      • 做个工具
    • 经过
      • 使用
        • publish.gradle及配置module的build.gradle
        • 配置窗口
        • 侧边栏
        • 发布确认窗口
        • 发布结果
        • 发布失败
        • 日志
      • 其他
      相关产品与服务
      命令行工具
      腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档