查看原文
其他

【建议收藏】Android 工程师如何系统提升核心竞争力?

JsonChao JsonChao 2022-07-18

 点击上方第二个“JsonChao”关注公众号

这是JsonChao的第 126 期分享

现如今,Gradle + 编译插桩 的应用场景越来越多,无论是 各种性能优化中的插件工具制作,还是用来支持 插件化、热修复的各种插件,都会使用到这个组合,因此,掌握 Gradle + 编译插桩 技术能够大大提升我们的技术竞争力

助力一份 Android Gradle 编译插桩面试宝典

Contents

Gradle

工程构建工具从古老的 mk、make、cmake、qmake, 再到成熟的 ant、maven、ivy,最后到如今互联网时代的 sbt、gradle,经历了长久的历史演化与变迁。Gradle 作为一款新生代的构建工具无疑是有它自身的巨大优势的,因此,掌握好 Gradle 构建工具的各种使用姿势与使用场景其重要性不言而喻。并且,Gradle 已经成为 高级 Android 知识体系 必不可少的一部分。因此,掌握 Gradle,提升自身 自动化构建技术的深度, 能让我们更加地 如虎添翼。

Groovy 作为 Gradle 这一强大构建工具的核心语言,其重要性不言而喻,但是 Groovy 本身是十分复杂的,要想全面地掌握它,我想几十篇万字长文也无法将其彻底描述。所幸的是,在 Gradle 领域中涉及的 Groovy 知识都是非常基础的,而且在后面我们自定义 Gradle 插件的时候需要使用到这些技巧,因此要掌握好 Gradle, Groovy 是需要全面了解的。

从明面上看,Gradle 是一款强大的构建工具,而且许多文章也仅仅都把 Gradle 当做一款工具对待。但是,Gradle 不仅仅是一款强大的构建工具,它看起来更像是一个编程框架。Gradle 的组成可以细分为三个方面:groovy 核心语法、Android DSL、Gradle API,而 Gradle API 则是学好 Gradle 重中之重的一个环节,这篇文章我们将一起探索 Gradle 的核心部分。

本文将会手把手和你一起对 ByteX 插件平台的构建流程进行探秘。从 ByteX 的源码实现中,我们将会看到作者对 函数式编程、Java 1.8 Lambda 表达式、Java 1.8 Stream API、复杂泛型 等技术的灵活运用,而在学习 ByteX 源码的过程中,我们将会加深对这些基础技术的理解。

编译插桩

本篇文章涉及到了 Android 编译的深度方面:App 的编译和打包流程、签名算法的原理,也涉及到了 Android 编译的广度方面:持续集成。因此,在我们学习的过程中,技术就像是一棵树,在顶部叶子上各个领域看似毫不相干,但是在一个领域越往下深入,各个领域相互交错到的知识或者设计方式就越多,所以技术深度和广度并不是对立面,对技术深度的探索不仅有利于你在特定领域有更深理解,更加可以帮助你轻松切换到另一个领域,特别是像前端的各细分领域的工作,很多领域的知识背后都殊途同归,而技术的广度也不是有的人说的那样不堪,在有技术深度的基础上,去拓展自己的技术广度,其实会让你对原有技术的理解变得更加地深入。

编译插桩技术已经深入 Android 开发中的各个领域,而 AOP 技术正是一种高效实现插桩的模式,它的出现正好给处于黑暗中的我们带来了光明,极大地解决了传统开发过程中的一些痛点,而 AspectJ 作为一套基于 Java 语言面向切面的扩展设计规范,能够赋予我们新的能力,毫无疑问,谁先一步掌握编译插桩技术,谁的未来必定会有更多的机会与可能性。

拥有扎实的 JVM 字节码基础能让我们更好地掌握 ASM 这个强大的编译插桩工具,而灵活地运用 ASM 能让我们的个人以及项目团队的生产力有质的提升,这一点,无论是在中小型公司,还是在一二线的大公司来说,都是能极大地提升自身的生产力以及个人与团队的价值。因此,掌握 JVM 字节码便是一件迫不及待的事情了。本文吸取了市面上绝大部分经典 JVM 著作与优秀博文的优势之处,将其中易于理解的部分重新编排并精心处理,相比于仅仅阅读一本 JVM 书籍来说,能让我们在更短的时间内去理解更多对我们重要的知识。

前面我们深入学习了 AspectJ 的使用,但是由于其 基于规则,切入点相对固定 等弊端,所以对于字节码文件的操作自由度以及开发的掌控度就大打折扣。并且,他会额外生成一些包装代码,对性能以及包大小有一定影响。而 ASM 则完美地解决了其 99 % 的缺陷,因此,本篇文章我们将逐步深入探秘 ASM,让我们真正拥有 灵活操作字节码的基础能力,以此从质的层面提升我们个人以及项目团队的生产力,打造自身更多的技术亮点,让面试官对我们刮目相看。



END



往期推荐



快速上手 Android 内存优化,需要哪些内功?

Flutter 混编工程之 Engine 复用

Android 进阶探索  为什么别人成长那么快?

深入探索 Android 包体积优化(匠心制作-下)

深入探索 Android 包体积优化(匠心制作-上)


欢迎关注我的微信:bcce5360,群人数已超200,无法扫码入群,加我微信拉你进群。


点击下方卡片关注JsonChao,为你构建一套

未来Android开发必备的知识体系

▲ 点击上方卡片关注 JsonChao,构建一套

未来 Android 开发必备的知识体系


你若喜欢,为JsonChao点个在看哦 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存