查看: 22|回复: 22

有没有受 Android 工程编译慢困扰的老安卓,推荐个我自己做的方案

[复制链接]

1

主题

12

回帖

27

积分

新手上路

积分
27
发表于 4 天前 | 显示全部楼层 |阅读模式
背景是这样的,21 年的时候我突然灵光一闪,想着“如果我编译的文件足够少,应该要编译的足够快”,然后在 3 个月肝了一个 MVP 出来(还拿去答辩通过了)。
这是当时录的 视频

方案核心是用了三个黑魔法:

源码编译只用 javac/kotlinc 编单个文件;

资源编译用 aapt2 ,但被我改成了支持增量 link 的定制版本;

部署会优先走 Android Studio 的 Apply Changes ,可以热重载;
这一套下来耗时可以压在 3 秒内。

不过当时基本只是个玩具,动不动就失败崩溃。而且当时公司比较流行把工程放到云服务器编译,只拉 apk 下来,导致我这个需要本地 build 产物的方案不太好落地。后面就是 2 年断断续续的沉沦和奋起,反正没有占上班资源,都是自己下班时间搞,所以也没 KPI 。

直到 23 年我突然想到(有点晚)可以用 rsync 把文件也拉到本地,所以又奋起了一波,在 23 年终于做了个 v1 版本,给组内同学开始试用起来。后面老板也给力帮忙推了一波,人开始渐渐多了起来,继续疯狂迭代了 2 年(一年 1000+ 个 commit ),迭代到现在已经挺稳定了。

简述插件优势就是:

平均 3s 编译耗时(需要先 gradle 编译一次生成产物,改源码增量,改 gradle 文件重新降级);

直接装 IDE 插件就能用,不用改工程;

磨了 5 年,公司内部推广了 2 年半,接了十来个生产工程,编译了 80W 次(插件有个编译次数的上报),已经比较稳定了。

今年想走公司仓库开源,估计就是这两个月的事情。目前还没开源,但插件可以直接下载用。我在外网放了一份,看看有没有感兴趣的老哥试用一下,提前给点反馈。接入文档
回复

使用道具 举报

6

主题

3

回帖

26

积分

新手上路

积分
26
发表于 4 天前 | 显示全部楼层
卧槽, 大佬.
回复

使用道具 举报

1

主题

4

回帖

11

积分

新手上路

积分
11
发表于 4 天前 | 显示全部楼层
我习惯用 github 的 action 流水线自动编译,就是很慢,让 ai 帮忙改配置文件就行了,自己本地不用搭建一坨安卓的环境
回复

使用道具 举报

1

主题

12

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 4 天前 | 显示全部楼层
@luckyc 🧎‍♀️
回复

使用道具 举报

1

主题

12

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 4 天前 | 显示全部楼层
@superkkk 我们这暂时还没法全走云端,不过也是迟早的事情。到时候不知道我这方案还能不能继续产生价值,万一 ai 干啥都是 one shot 都没有调试的事了
回复

使用道具 举报

0

主题

2

回帖

4

积分

新手上路

积分
4
发表于 4 天前 | 显示全部楼层
真大佬啊,就是这个下载太慢了,6kb/s
回复

使用道具 举报

0

主题

6

回帖

12

积分

新手上路

积分
12
发表于 4 天前 | 显示全部楼层
就不能直接放个 github 或者其他不需要登录的文档吗
回复

使用道具 举报

1

主题

12

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 4 天前 | 显示全部楼层
@WebKit 抱歉了,因为后面打算换个组织开源所以仓库目前是私有的没法访问
回复

使用道具 举报

1

主题

12

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 4 天前 | 显示全部楼层
@BestEicky 我这是阿里云 100M 水管,奇怪了,其他人暂时没遇到
回复

使用道具 举报

0

主题

2

回帖

4

积分

新手上路

积分
4
发表于 4 天前 | 显示全部楼层
用起来了,神器! Android 终于有了类似 web 的开发体验! nb
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖
返回顶部