OkBuck is a gradle plugin that lets developers utilize the Buck build system on a gradle project.
工程根目录的build.gradle
文件中加入配置:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.uber:okbuck:0.54.3'
}
}
apply plugin: 'com.uber.okbuck'
大部分情况下, 上述配置就完成了。OkBuck托管在jcenter,所以 jcenter()
必须加入到 buildscript
和 allprojects
的 repositories
列表中,
而且必须在 apply plugin
部分之前。
应用 OkBuck 插件之后,工程内将会产生两个 gradle task,okbuck
和 buckWrapper
okbuck
将会生成 BUCK 配置文件buckWrapper
buck wrapper 类似于 gradle wrapper, 利用它 OkBuck 可以进行更聪明地为我们服务我们非常建议大家使用 buckWrapper
,即执行:./gradlew buckWrapper
。
可以执行 ./buckw targets
命令查看所有可以 build 的目标, 而生成的 .buckconfig.local
文件中会指定多个 alias, 例如 appDevDebug
,appProdRelease
,another-appDebug
等,根据它们可以确定 BUCK build 的命令,例如 ./buckw build appDevDebug
等。
okbuck {
buildToolVersion = "24.0.2"
target = "android-24"
linearAllocHardLimit = [
app: 16 * 1024 * 1024
]
primaryDexPatterns = [
app: [
'^com/uber/okbuck/example/AppShell^',
'^com/uber/okbuck/example/BuildConfig^',
'^android/support/multidex/',
'^com/facebook/buck/android/support/exopackage/',
'^com/github/promeg/xlog_android/lib/XLogConfig^',
'^com/squareup/leakcanary/LeakCanary^',
]
]
exopackage = [
appDebug: true
]
appLibDependencies = [
'appProd': [
'buck-android-support',
'com.android.support:multidex',
'libraries/javalibrary:main',
'libraries/common:paidRelease',
],
'appDev': [
'buck-android-support',
'com.android.support:multidex',
'libraries/javalibrary:main',
'libraries/common:freeDebug',
]
]
annotationProcessors = [
"local-apt-dependency": ['com.okbuck.apt.ExampleProcessor']
]
buckProjects = project.subprojects
extraBuckOpts = [
'appDebug', [
"binary": ["trim_resource_ids = True"]
]
]
wrapper {
repo = 'https://github.com/facebook/buck.git'
}
}
buildToolVersion
指定Android SDK Build-tools版本,默认为24.0.2
target
指定Android target sdk版本,可以运行<sdk home>/tools/android list targets --compact
android-24
linearAllocHardLimit
和primaryDexPatterns
都是map,用来配置BUCK multidex的build.gradle
文件中开启),可以忽略这两个参数exopackage
和appLibDependencies
都是map,用来配置BUCK exopackage,annotationProcessors
用来声明项目中的注解处理器, key 为 module 路径, value 为注解处理器类的全名。buckProjects
用于控制哪些 module 将使用 BUCK 进行构建, 默认是项目中的所有 moduleapp
如果遇到任何问题,请提一个issue,如果能提供错误日志,就是极好的了。