蚂蚁金服 mPaaS IDEA 插件实践Demo演示
前言
本文深入展开 mPaaS 在 IDEA 插件开发之路上踩过的坑和沉淀的思考,希望能够带来一些参考性:
● mPaaS 冷启动过程如何 通过工具选择优化接入成本● IDEA Plugin 开发过程中 踩过的坑
● 思考未来 Code&Build 效率的提升
> 开篇介绍 mPaaS
移动开发平台(Mobile PaaS,简称 mPaaS)是源于支付宝 App 的移动开发平台,为移动开发、测试、运营及运维提供云到端的一站式解决方案,能有效降低技术门槛、减少研发成本、提升开发效率,协助企业快速搭建稳定高质量的移动 App。
筚路蓝缕以启山林:
> mPaaS 冷启动时的接入成本优化
这是对 mPaaS 刚启动并对外服务的时候,项目组开发资源的真实描摹。
在当时,四五个工程师需要 hold 如此庞大的框架并且支撑对外能力输出。对于一群熟悉 C 端业务的程序员而言,挑战不言而喻。这个时期我们基本面临两个问题:
● 客户来源从哪里来?● 如何进一步简化客户接入成本
接下来我们着重围绕「如何简化客户接入成本」展开讨论,主要为两部分:
● Code● Build
在 Android 端,选择了 IDEA Plugin 作为切入点。
工欲善其事,必先利其器
> 选择 IDEA Plugin
IDEA 作为 Android 开发的工具平台,提升了 Android Coding 的效率和程序员 Coding 的幸福感。 当 mPaaS 团队开始对外提供产品服务的时候,我们希望达成一个愿景就是:simple code and simple build。 IDEA Plugin 无疑是 mPaaS 简化 Android 接入成本的不二选择。
山穷水复
> 如何克服 IDEA Plugin 开发过程中踩过的坑
在开发 IDEA Plugin 过程中,我们遇到两方面的挑战:
● 遇到所有应用开发过程中都会遇到的问题,API 接口稳定性。● code everything 和 build erverything 的统一
> API 接口稳定性
mPaaS IDEA 插件是基于 Android Studio Android Plugin 之上的一层插件封装。 在基于 Android Studio Plugin 以及 IDEA 开发过程中,最大的困扰来来自于 API 不稳定、修改频繁, 例如: Gradle build 、Install apk 等功能的 API 在 Android studio 2.1x 版本和 3.x 版本实现完全不同。(参见后文 API 变化列表)。
> Code Everything and Build Everything
mPaaS 存在若干组件,组件之前的关系如图所示
所以不能采用传统的 maven 树状依赖传递,只能采用依赖图的方式传递依赖。Gradle、Maven 等工具树形依赖显然不能满足要求。
柳暗花明
> 解决依赖问题
1. 为了兼容不同的 Android Studio,我们写 20+ 适配器,只为兼容 Android Studio 新版本的 API
以下仅是部分 API 变化,供参考:
2. 依赖问题解决:对于一个非树状的依赖关系谱来说
在依赖的添加的路上我们经历了「手动编写依赖文件」和「Gradle & IDEA 结合」两个阶段,而我们更希望能够继续演进到第三阶段:工具具备自主提示功能。
● 2.1. 阶段:手动编写依赖文件这一阶段主要是手动编写依赖文件,即输出一份带有标注的文件,操作依赖文件即可。
● 2.2. 阶段:Gradle & IDEA 结合
目前我们正处于这一阶段,对每一次将要发布的依赖,我们写了一个基于 Dex 产物的依赖分析器,分析 Bundle 之间的依赖关系。这个依赖分析器能够根据实现定义好的依赖切分规则,将所有 Bundle 切分成若干 Bundle 组。如图所示
● 2.3. 阶段:Looking Forward
我们希望的终极阶段是: 能够将用户接入体验尽可能地提升,并且工具方面有一部分自主提示的功能。如果大家有好的思路和想法,欢迎和我们一起交流。
Demo Show
> 演示如何运用 mPaaS IDEA Plugin 创建工程
进一步了解 mPaaS 开发环境配置和应用创建流程,参考文档:
https://tech.antfin.com/docs/2/51725
> 演示如何运用 mPaaS IDEA Plugin 生成无线保镖图片
进一步了解图片加密,参考文档:
https://tech.antfin.com/docs/2/85833
> 演示如何运用 mPaaS IDEA Plugin 接入热修复能力
进一步了解 mPaaS 热修复功能,参考文档:
https://tech.antfin.com/docs/2/85898
灯火阑珊
> 如何优化 Code&Build 效率的思考
1. Fisrt about API or about Plugin
对于一个蓬勃兴起的开源项目来说,快速迭代和 API 稳定性之间似乎有难以弥合的矛盾。很多人眼中,API 稳定性会导致历史包袱沉重,但是对于 IDEA Plugin 来说,不稳定的 API 带来的是插件碎片化。这个版本可以支持的能力,下一个小版本却又不一定可以。
组件化,容器化盛行的今日,我们是不是可以将每一个 Plugin 作为一个 OSGi 的服务提供出去,保证服务的稳定性,从我的角度理解会比维持接口稳定性简单的多。
2. Code and Build
Code 和 Build 是工程师的左右手,左手 Code,一行有一行,右手 Build 一次又一次。 IDEA 拥有 Android、Python、Go、Web 和 C/C++ 等众多 IDE 分支,可谓是 Code Everything 的代表。 Gradle 的 Solgan 是 build ererything。
那是否 IDEA 和 Gradle 可以有更加良好的协作方式,在 Build error and error 重重包围下,解放程序员,让程序员花费更多的时间在 Code 上。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
用JWT技术解决IM系统Socket长连接的身份认证痛点
1、引言 随着瓜子二手车相关业务的发展,公司有多个业务线都接入了IM系统,IM系统中的Socket长连接的安全问题变得越来越重要。本次分享正是基于此次解决Socket长连接身份安全认证的实践总结而来,方案可能并不完美,但愿能起到抛砖引玉的作用,希望能给您的IM系统开发带来启发。 学习交流: - 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》 (本文同步发布于:http://www.52im.net/thread-2106-1-1.html) 2、原作者 封宇:瓜子二手车技术专家,中国计算机学会专业会员。主要负责瓜子即时消息解决方案及相关系统研发工作。曾供职于58同城、华北计算技术研究所,参与到家消息系统、58爬虫系统以及多个国家级军工科研项目的架构及研发工作。 封宇同时还分享了其它IM方面的技术实践和总结,您可能也会感兴趣: 《从零开始搭建瓜子二手车IM系统(PPT) [附件下载]》 《一套海量在线用户的移动端IM架构设计实践分享(含详细图文)》 《一个低成本确保IM消息时序的方法探讨》 《移动端IM中大规模群消息的推送如何保证效率、实时性?》 3、系列文章 本文是I...
-
下一篇
Android Gradle进阶配置指南
简单的总结一下gradle: 1.Gradle是一种构建工具,它可以帮你管理项目中的差异,依赖,编译,打包,部署......你可以定义满足自己需要的构建逻辑,写入到build.gradle中供日后复用. 2.Gradle不是一种编程语言,它不能帮你实现软件中的任何实际功能 Gradle 基本 如果你用Android Studio新建一个项目的时候,默认生成一大堆关于gradle的东西,其中最重要的是一个build.gradle的文件,内容如下: apply plugin: 'com.android.application' android { compileSdkVersion 26 buildToolsVersion "26.0.0" defaultConfig { minSdkVersion 19 targetSdkVersion 26 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-an...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2全家桶,快速入门学习开发网站教程
- 设置Eclipse缩进为4个空格,增强代码规范
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS6,CentOS7官方镜像安装Oracle11G
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8