Android开发APP开发经验总结Android技术知识

从零开始写一个抖音App——Apt代码生成技术、gradle插件

2018-08-22  本文已影响553人  何时夕

本文首发于简书——何时夕,搬运转载请注明出处,否则将追究版权责任。交流qq群:859640274

本项目的 github 地址:MyTikTok

大家好,两周不见技术有没有增长呢?本周的文章主要讨论下面几个问题,大家可以按需跳章查看以节省大家宝贵的时间,本文预计阅读时间10分钟

一、讨论

在放上讨论之前我需要重申本项目的意义、初衷和前提

讨论1:为啥不用viewmode/mvvm框架?

讨论2:架构感觉不是很简洁?

讨论3:apt 的这套操作,只是为了 Presenter 的初始化传参,如果使用注解通过 apt 生成 build 对象,是否简单很多?

讨论4:基本的接口定义都瞎写…不允许有public…可怕!

讨论5:因为是按模块划分的,所有模块都使用mvp模式开发是否够稳妥,我觉得每个模块应该根据具体业务场景,来选择适合的架构模式,有些适用mvc,有些适用mvvm,有些适用mvp。

二、mvps代码生成原理

上篇博客对于 mvps 我只介绍了在 app 运行时的整个流程,但是对于编译时的整个代码生成的流程却因为时间限制没有写完,本章节就会将整个流程走一遍,同时介绍一下 apt 下 debug 的技巧。

1.例子

图1:MainActivity.png
图2:LinearPresenter.png
图3:TextPresenter.png
图4:ImagePresenter.png

2.代码生成流程

我们在上篇文章里面讲解了 Presenter 的整个运行流程,这一节我们就来讲讲使用 apt 生成模板代码的流程。建议结合项目源码食用!

图5:FieldProcessor1.png
图6:AutoService生成的文件.png 图7:FieldProcessor2.png 图8:FetcherHelper.png
图9:MainActivityFetcher.png
图10:app module 配置文件.png 图11:FieldProcessor3.png

三、开发一款gradle插件

上一节我们讲了如何使用 APT 生成模板代码,可能有同学会想如果我想向已经有的代码里面插入一些模板代码怎么办呢?这一件事 APT 是办不到的,但是我们可以开发一款 gradle 插件来满足我们这种需求。

1.背景知识

2.开发插件

图12:invoker 项目结构.png
图13:invoker gradle文件.png
图14:invoker maven 配置.png 图15:FetcherHelper.png
图16:Fetchers.png
图17:app gradle.png
图18:invoker_info.png 图19:invoker properties.png
图20:invoker plugin.png
图21:invoker transform.png
图22:jar scanner.png
图23:jar modifier.png

3.上传插件到本地Maven库

到这里为止我们的插件已经开发完成了,但是我们该如何使用这个插件呢?其实在任何项目中我们都在使用着 gradle 插件。

图24:根 build.gradle.png
图25:app module build.gradle .png
图26:invoker gradle properties.png
图27:invoker gradle文件.png
图28:maven目录.png

四、高效的跨语言数据协议protocol

五、尾巴

本篇文章是从零开始写一个抖音App系列文章的第三篇,篇幅比较长能看到这里的同学非常感谢你们对我的认可。给一个看到这里的同学的小福利吧:在未来我会开放本项目在 github 上权限,只要对本项目了解比较深的同学都能参与项目的开发,看到这句话的同学我会优先考虑,但是只限前5名,记得加QQ群然后在群里小窗我。

连载文章

上一篇 下一篇

猜你喜欢

热点阅读