不久前写了篇文章《 Google I/O 21 Android Gradle Plugin 更新总结》,今天被 Google 的 “Android 开发者” 转载了。不过今天收到了一些反馈是:能不能也写写 Gradle 和 AGP 基础的文章。确实我接触过的绝大多数 Android 开发者都对 Android 构建方面的知识有种敬畏感,Gradle + Android Gradle Plugin ( AGP )的组合复杂度不低,而互联网上能找到的系统性资料稀少(英文都不多,中文就更少啦),大家有时候想学也难以下手,比如看看下面这些底层工具技术以及架构应用:
底层技术:Gradle 、AGP 、Annotation Processor ( AP )、AAPT 、D8&R8 、ByteCode modification 、Dex modification 、Kotlin Compiler 、ZIP&APK&AAR&AAB 、IDE Plugin 、etc.
架构应用:依赖注入、组件化、插件化、多渠道包、SDK 按需接入、白牌应用、多维度测试(单元、集成、功能测试)、安全防护(混淆、加壳、native 加密...),Jetpack Compose 、CICD 以及更多其他的自动化流程;
编译构建的知识不仅是为了加快构建速度,还包含了自动化、架构优化的诸多方面,甚至与运行时的合作联动。也因此,我一直在思考对于这类文章的广度和深度应该怎么样去调整——啊,想破脑袋不如找广大的开发者们投个票好啦。AB 才疏学浅,下方的选项仅基于个人的理解来编写,有不足之处欢迎私信我提建议~
build.gradle(.kts)
,对 Gradle 、AGP 有基础的认知,例如了解 Gradle 的任务机制,但碰到非 App 源码的编译错误有点不知所措;buildSrc
模块抽取并统一管理依赖、使用自定义 Task 组合 CICD 的流程,运用一些最佳实践来提高编译构建效率;由于 V2 没有投票功能,还麻烦大家扫个码或者用 wx 点这个链接投~
1
2bab OP 不方便的话也可以在这里留言讨论~
|
2
AoEiuV020 2021-09-14 16:03:18 +08:00 1
1.5 吧,感觉工作中没有更复杂的需求要深入 agp 的,个人除了最基本的使用,还可以自己写一些预处理,排查一些 gradle 配置导致的问题,但也就这样了,
|
3
zhouquanbest 2021-09-14 20:18:13 +08:00 1
借地发广告:
快手招 Android 构建方向专家,现在股价已经在触底反弹时期了,抄底好时机。 北京、上海、杭州、深圳都有 base 工作方向为深入 Gradle 和 AGP,针对性修改其实现机制来满足快手编译性能和研发需求。最好对 R8 有比较充足的理解 对构建方向有兴趣的小伙伴也招!位置不多,薪资丰厚。 [email protected] 内推奖金都归你 |
4
2bab OP @zhouquanbest 哈哈哈哈哈碰到熟人了,广告都打了,帮我填个问卷吧!
|
5
imtianx 2021-09-14 21:10:19 +08:00
@zhouquanbest 之前面过没过,多久后可以继续面试哇
|
6
imtianx 2021-09-14 21:13:52 +08:00 1
编译构建相关的知识确实很少很少,解决起来效率还不是那么快。不过现在好用了很多了。
|
7
winterbells 2021-09-14 21:40:41 +08:00 1
不知道自己属于什么位置,花点时间能抄个像模像样的
之前把公司项目都改成 kts 了,各种报错。 最后还是靠 GitHub 救了自己,直接搜关键词 + 后缀名 kts 这篇文章中午看到了。我以为公众号的文章都是自己投稿的。 |
8
penguinWWY 2021-09-15 01:41:50 +08:00 1
逻辑上属于 3.5 ?
从罗列的技术看 gradle 比较熟悉,看过源码,提过 pr kotlin 也比较熟,自己的项目基本都是用 kotlin 代替 java,看过 kotlinc 和 kotlin-native 的部分源代码 做过 Android 加固,所以字节码、d8 啥的也都看过,自己写过 dex2class 工具 编译构建属于本职工作,Android 的编译过程和构建算是比较简单的了。。。 唯一的问题是,我不做 Android,解决的实际问题比较少,一般都是加固、反编译时候遇到的 |
9
zhouquanbest 2021-09-16 16:26:08 +08:00
@imtianx 不是一个部门无 CD 同一个部门 3 个月 CD
|