前言

本文深入展开 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 上。

原文发布时间为:2018-11-28
本文作者:木磊
本文来自云栖社区合作伙伴“安卓巴士Android开发者门户”,了解相关信息可以关注“安卓巴士Android开发者门户”。

蚂蚁金服 mPaaS IDEA 插件实践Demo演示相关推荐

  1. 蚂蚁金服Docker网络技术实践

    以下内容根据演讲PPT以及现场分享整理而成. 主要内容提纲 一.docker网络分析 二.docker网络插件开发 三.蚂蚁金服的网络插件实践 一.docker网络分析 主要介绍三种docker网络, ...

  2. 开篇 | 蚂蚁金服 mPaaS 服务端核心组件体系概述

    mPaaS 是源自于支付宝客户端 App 的移动开发平台,为企业提供了移动开发.测试.运营及运维提供云到端的一站式解决方案,mPaaS 能有效降低技术门槛.减少研发成本.提升开发效率,协助企业快速搭建 ...

  3. 实时智能决策引擎在蚂蚁金服风险管理中的实践

    摘要:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日上海如期举办.金融智能专场分论坛上 ...

  4. 蚂蚁金服大规模分布式事务实践及四种分布式事务模式

    蚂蚁金服大规模分布式事务实践及四种分布式事务模式 作者: 绍辉 | 2019-07-30 13:55   收藏: 1 本文整理自蚂蚁金服技术专家.分布式事务 Seata 发起者之一张森(花名:绍辉)在 ...

  5. 蚂蚁金服 Service Mesh 深度实践

    点击上方"程序猿技术大咖",选择"关注公众号",一起共进步! 2019 年,蚂蚁金服在 Service Mesh 领域继续高歌猛进,进入大规模落地的深水区.本文 ...

  6. 实时智能决策引擎在蚂蚁金服风险管理中的实践 1

    摘要:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日上海如期举办.金融智能专场分论坛上 ...

  7. 诗和远方:蚂蚁金服 Service Mesh 深度实践 | QCon 实录

    敖小剑,蚂蚁金服高级技术专家,十七年软件开发经验,微服务专家,Service Mesh 布道师,ServiceMesher 社区联合创始人.专注于基础架构和中间件,Cloud Native 拥护者,敏 ...

  8. 蚂蚁金服 Service Mesh 落地实践与挑战|成都Service Mesh沙龙预告

    本文整理自 GIAC(GLOBAL INTERNET ARCHITECTURE CONFERENCE)全球互联网架构大会,蚂蚁金服平台数据技术事业群技术专家石建伟(花名:卓与)的分享.分享基于 Ser ...

  9. 蚂蚁金服mPaaS 3.0发布 助力客户智能化构建超级App生态

    1月4日,蚂蚁金融科技宣布蚂蚁金服移动开发平台mPaaS(mobile Platform-as-a-Service)升级到3.0版本,"新版本以智能技术助力客户构建自己的超级 App,企业可 ...

最新文章

  1. Oracle12c功能增强 新特性之管理功能的增强
  2. Hadoop-Yarn-框架原理及运作机制
  3. 32位 shell.efi x86_Linux 的 32 位内核自 Meltdown 以来一直有问题
  4. POJ 3974 Palindrome (算竞进阶习题)
  5. MSSQLSERVER数据库- 递归查询例子
  6. 什么是MSTP(多业务传输平台)?
  7. vijos p1460——拉力赛
  8. 9月20日 DNS总结
  9. 【python】filter()函数
  10. Android基础-Content Provider
  11. 根据Excel生成建表语句sql——工具介绍
  12. 网站 smtp服务器,网站smtp服务器
  13. 华为私密相册计算机找回密码,华为手机隐私空间密码忘了怎么办 华为手机隐私空间密码忘了解决方法...
  14. 别在为没有HDR贴图而烦恼了,30G 8K统统都白送!
  15. 【青少年编程】【Scratch】03 声音模块
  16. 手机sim卡插到电脑上网_听说有的笔记本电脑可以用手机卡的流量上网,是怎么弄的?需要在电脑上插手机卡么?是不是一般的笔记本都 ......
  17. django之 报错(1146, “Table ‘demo2.web‘ doesn‘t exist“)
  18. 致初级软件开发人员并自勉
  19. Matlab 关闭提醒,开始使用MATLAB?[关闭]
  20. 论文笔记:Identifying Lung Cancer Risk Factors in the Elderly Using Deep Neural Network - Chen, Wu

热门文章

  1. x265-1.7版本-encoder/motion.cpp注释
  2. 推荐一款万能的图片转换器,可以批量转换支持多种格式
  3. 高档住宅小区智能化弱电系统设计方案
  4. RxJava 线程切换
  5. Vue开发电子书app
  6. 膜拜!java英汉词典课程设计报告
  7. 多图介绍iMazing苹果手机管理软件的使用体验
  8. 美国地名索引(在美国的英文名市、中国)
  9. 百胜图Barsetto手动奶泡机测评意想不到的丝滑奶泡
  10. 爬虫 1 ---获取今日头条图片