当项目依赖的库很多时,本地开发编译速度会越来越慢,有时只是改动几行却要花上几分钟编译,非常影响开发速度。
这里简单的介绍下使用BUCK加速编译。
- 安装编译
https://buckbuild.com/setup/install.html 看文档,非常简单
Mac OSX可以直接通过homebrew安装,可以用手动下载源码编译。 -
使用
根据https://buckbuild.com/setup/quick_start.html 的介绍,- 1
- 2
- 3
- 4
- 5
- 6
- 7
然后在 my-project/buck-out/gen/apps/myapp 下面生成app.apk文件,这样一个简单的通过buck编译程序就完成了。
- 迁移
但是这样的目录结构通常和我们项目结构不同,怎么办?难道把现在项目结构也改成这样吗?成本会不会太大了!
其实和gradle一样,只需要设置相关的代码目录就可以了,下面就简单的介绍下如何使用buck编译现有项目。
第一种情况是现在项目结构还是eclipse那种的:
myapp/
– src/
– res/
– libs/
– assets/
– AndroidManifest.xml
– local.properties
– app.keystore
在myapp/ 目录新建一个BUCK文件,复制以下内容并修改包名后保存到BUCK文件中。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
再新建一个.buckconfig的文件,复制以下内容到.buckconfig文件中
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
那么现在项目中的文件结构如下:
myapp/
– src/
– res/
– libs/
– assets/
– AndroidManifest.xml
– local.properties
– app.keystore
– BUCK
– .buckconfig
并且local.properties 有如下:
# app.keystore 签名密码,自行修改
key.alias=my_alias
key.store.password=store_password
key.alias.password=alias_password
好了,只需要添加2个文件并略微修改一下就可以使用buck超快的编译速度了!
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
这样就完成了基于buck编译的改造,多看文档 https://buckbuild.com/
规则写起来就比较简单了。
现在没有提到编译AIDL文件,因为buck目前有bug没法编译parcelable类型的aidl文件,https://github.com/facebook/buck/issues/271 其实配置和上面的。
还有需要注意的是 不能用switch(id){ case R.id.button: }这样使用R中的属性,
参考Demo: https://buckbuild.com/article/exopackage.html
后面将会介绍用buck编译 android studio 项目的规则。