编译构建知识的调查结果&新企划!"

2021/09/24

上周的《Android App 编译构建知识的小调查》,收到了预期的问卷数量 101 份(剔除我自己正好100份,也太巧了?)。仅基于个人的理解,我编写了下方五个选项(下文的 1/2/3/4 指代这五个层级):

  1. ”仅基础使用“(初级):我能读懂、修改 build.gradle(.kts),对 Gradle、AGP 有基础的认知,例如了解 Gradle 的任务机制,但碰到非 App 源码的编译错误有点不知所措;
  2. ”实现高效自动化、工程化“(中级):我对工程化、自动化有一定的认知、追求,可以通过构建脚本拆分、自定义 Task 来实现日常事务的优化,例如使用 buildSrc 模块抽取并统一管理依赖、使用自定义 Task 组合 CICD 的流程,运用一些最佳实践来提高编译构建效率;
  3. ”编译构建增强“(高级):我可以通过查阅 Gradle 文档、Debug AGP、编译期的 Profiler 日志,来自定义 Annotation Processor、Gradle Plugin 等解决一个项目碰到实际问题,抽象成一套可复用的工具;
  4. ”对编译构建有较为全面的理解“(资深):我了解编译构建的主要环节实现,常见架构应用的原理,实践过多个编译构建增强工具,对项目的基础架构梳理得井井有条;
  5. ”深度参与“:我了解 Android App 编译构建的前沿发展,积极参与社区 Discussion、Proposal、PR、Review,灵活运用、修改各类工具,对于不同类型的问题、需求能给出优解、多解。

调查结果

虽说有一百份,但是:

  1. 第一天我就收到了“为什么没有0基础的选项”反馈;
  2. 大部分投票的同学都是我公众号的读者 + 社区比较活跃且对 Gradle/Android 构建有兴趣的朋友;
  3. 所以从整个社区的角度来看,结果应比下图更往“初级”靠拢。

简单分析了几个点:

  • 现在处于的位置:
    • 是典型的倒金字塔结构,并不意外,不管哪门技术调研都会是这个结果;
    • 但前面提到,实际“初级”的占比应比上述数据更多,原本预计可能就 50% 的“初级”现在看来其实有 70%,所以收到“希望多写点基础内容”的反馈非常真实;
    • 我很想知道“深度参与”的那一票是谁投的(不是我),很想和业界大佬交流交流ヾ(◍°∇°◍)ノ゙。
  • 努力达到的位置:
    • 是比较正态分布的结果,即便考虑到误差,也是令我感到欣慰的;
    • 这和现在的市场需求还比较贴切,初级工程师的供给较为均衡,高级工程师仍然供不应求,掌握构建相关的知识可能是一块不错的向上跃迁的敲门砖;
    • 如果有更优质的内容在社区传播,我相信填“深度参与”的人一定能做到,并且可以更多。

所以...我想输出的是...?

不少读者(特别是“Android&英语群”里的朋友)知道我已经做了很长一段时间的 Android 构建高级进阶的内容,为了系统性地解决从位置 1 或 2 进阶到 3+ 的多个难题,还需要一段时间的整理和编写,预计在明年会放出。

而从这段时间的社区讨论、问卷反馈中,我也不断在思考从 0 到 1 或 2 的内容该怎么做?社区上这块的内容虽然不及 UI 方面的多,但鉴于每个 Android 开发者都必须使用 Gradle,业务上也有多渠道打包、加固等绕不过去的技术需要集成,Android 构建基础的内容还是零星有人分享的,中文社区中例如掘金的 Android 类目下还专门有 Gradle 的小类。那,大家缺的是什么?

我认为是一个方向,一份大纲。

  1. 从 Gradle 的角度切入的系统性教程出现了多年断层,你能找到的图书很多还在使用 “<<” 等过时的 API(“doLast(...)” 的符号重载);
  2. 而 Gradle 官方的文档按 PDF 版来算有 1200+ 页,面之广,直接覆盖了 1-4 的各层级内容,英文不错的朋友快速读一遍都得花上几天;
  3. 从 Android 构建的角度切入的系统性教程几乎没有,一旦碰到复杂点的需求,要求自定义一个简单的 Task 和 AGP 进行交互,就发现缺漏的知识太多,更不知从何入手学起。

理顺出一条学习路径,加上诸多实例,可能几个篇章就能做出不错的效果,再加上 Kotlin First 的原则,以 KTS 和 Kotlin 编写的插件为例,减少一些 Groovy 的学习成本,我想应该妙极了! 不出意外的话,十月份我会放出一些有意思的东西。

从 KMM 文档翻译活动到 KOGE

几个月前,由于我工作中使用了 KMM(Kotlin Multi-platform Mobile),所以决定做点什么—— “kotlin-mobile-docs” 的中文文档翻译计划。以我为初始翻译者,到后来的另外五个小伙伴加入,我们做了大概 60% 的文档翻译。很可惜我们最后没有完成所有的内容,具体原因如项目 README:

而上述 Android 构建 0 到 1 的内容,在确定了路线并做好一部分内容后,我依旧想开源到社区,和大家共同打造这个有价值的项目。我起了个项目名字叫 KOGE,意味 Kotlin-oriented Gradle Essential。这次,我们不做翻译,我们做更有意思的自学大纲,做一手的内容,做反向输出到英文社区的内容。

最后,还没有加过“Android&英语群”的朋友,欢迎来群里玩~ 这里日常吹水的东西很少,但是一手的新知识、新资料很多呀~

欢迎关注我的 Github / 公众号 / 播客 / Twitter


评论和交流请发送邮件到 [email protected]

Wechat Donate QACode
通过微信扫描赞赏码赞助此文