Android App 编译构建知识的小调查 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
2bab
V2EX    Android

Android App 编译构建知识的小调查

  •  
  •   2bab 2021-09-14 15:55:23 +08:00 11952 次点击
    这是一个创建于 1566 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不久前写了篇文章《 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 才疏学浅,下方的选项仅基于个人的理解来编写,有不足之处欢迎私信我提建议~

    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,灵活运用、修改各类工具,对于不同类型的问题、需求能给出优解、多解。

    由于 V2 没有投票功能,还麻烦大家扫个码或者用 wx 点这个链接投~

    9 条回复    2021-09-16 16:26:08 +08:00
    2bab
        1
    2bab  
    OP
       2021-09-14 15:59:01 +08:00
    不方便的话也可以在这里留言讨论~
    AoEiuV020
        2
    AoEiuV020  
       2021-09-14 16:03:18 +08:00   1
    1.5 吧,感觉工作中没有更复杂的需求要深入 agp 的,个人除了最基本的使用,还可以自己写一些预处理,排查一些 gradle 配置导致的问题,但也就这样了,
    zhouquanbest
        3
    zhouquanbest  
       2021-09-14 20:18:13 +08:00   1
    借地发广告:
    快手招 Android 构建方向专家,现在股价已经在触底反弹时期了,抄底好时机。
    北京、上海、杭州、深圳都有 base
    工作方向为深入 Gradle 和 AGP,针对性修改其实现机制来满足快手编译性能和研发需求。最好对 R8 有比较充足的理解

    对构建方向有兴趣的小伙伴也招!位置不多,薪资丰厚。

    [email protected] 内推奖金都归你
    2bab
        4
    2bab  
    OP
       2021-09-14 20:55:50 +08:00
    @zhouquanbest 哈哈哈哈哈碰到熟人了,广告都打了,帮我填个问卷吧!
    imtianx
        5
    imtianx  
       2021-09-14 21:10:19 +08:00
    @zhouquanbest 之前面过没过,多久后可以继续面试哇
    imtianx
        6
    imtianx  
       2021-09-14 21:13:52 +08:00   1
    编译构建相关的知识确实很少很少,解决起来效率还不是那么快。不过现在好用了很多了。
    300
        7
    300  
       2021-09-14 21:40:41 +08:00   1
    不知道自己属于什么位置,花点时间能抄个像模像样的


    之前把公司项目都改成 kts 了,各种报错。
    最后还是靠 GitHub 救了自己,直接搜关键词 + 后缀名 kts

    这篇文章中午看到了。我以为公众号的文章都是自己投稿的。
    penguinWWY
        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,解决的实际问题比较少,一般都是加固、反编译时候遇到的
    zhouquanbest
        9
    zhouquanbest  
       2021-09-16 16:26:08 +08:00
    @imtianx 不是一个部门无 CD 同一个部门 3 个月 CD
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5770 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 02:24 PVG 10:24 LAX 18:24 JFK 21:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86