BUCK 使用体验

搞了两天,终于用上了这个BUCK,编译超快,一个大项目,在我的Mac pro里面,使用android studio1.5 编译起码要90秒,甚至120秒,
一次调试就需要差不多两分钟,这个受不了,效率很打折扣,特别做重复调试这类,之前搞内存泄漏,或者UI 调整,经常改一点就重复编译,一天下来改不了多少
于是不知道脑抽经还是什么,看到了BUCK,听说过年团队只有微信在使用,于是我研究了一下(百度了一下)。国内有一两篇博客,抄官网。。。。
于是找官网,官网英文,没办法,只能看代码的关键字,于是还真是顺利安装了。。。。brew 安装的
安装后,buck help 命令正常,利用命令创建的快速项目也可以编译,很嗨心,实际后面的麻烦一堆堆。
1、命令创建的项目不是标准的安卓项目
2、没包括 jar 、so、aidl;
3、如何在旧项目使用?
   于是使用自己平时用的一个例子,参考他的快速例子,因为当时没怎么看官网,的确走了弯路。搞了多个BUCK文件。
1、首先 需要创建buck 环境,就是为原项目创建buck环境,官网有个命令,如果单纯使用这个命令,你估计会悲剧了,因为会被你的项目关联给取消了,android studio不能识别;新建.buckconfig  文件,里面填写下面内容,这个文件有大用的,就是开始文件,接受命令的
官网给的例子我没用上,也许他觉得程序员很聪明 不用太详细,和我写博客一样,简陋写,
[alias]
debug = //:debug
release = //:release
[android]
	target = android-19
[android]
  build_tools_version = 19.1.0

alias 就是别名

命令用时候就是这个别名,看到debug ;
2、其实一个BUCK文件即可,快速例子里面多个BUCK,不知道用意何在。但是我尝试看懂了那些配置语法后,就合并一起,果然成功,关键是引用问题:
      需要自己新建一个BUCK文件,系统不会帮你创建的:
android_binary(
  name = 'debug',
  package_type = 'DEBUG',
  manifest = 'AndroidManifest.xml',
  keystore = '//:debug_keystore',
  deps = [
    '//:activity',
  ],
)
<pre style="background-color: rgb(255, 255, 255); font-family: Menlo; font-size: 12pt;">project_config(
  <span style="color:#000080;"><strong>src_target </strong></span>= <span style="color:#008000;"><strong>':app'</strong></span>,
)

 
 
 这个 
 
android_binary就是入口,name debug 就是刚才说的别名 ,注意路径问题
根据这个BUCK文件来配路径,
//:
这个符号就是 buck里面的引用符号,应用那个标签的,
下面是 打包key
keystore(
  name = 'debug_keystore',
  store = 'xili123.keystore',
  properties = 'debug.keystore.properties',
  visibility = [
    '//:app'
  ],
)
visibility 是相对哪里可以有效引用
其他没注意的了,多看看例子 修改修改 他就会提示错误,这样领悟更深刻
android_resource(
  name = 'res',
  res = 'res',
  assets = 'assets',
  package = 'com.lzx.example',
  visibility = [
    '//src:',
  ],
)
这个是 资源文件的标签,看命名应该可以懂
gen_aidl(
  name = 'IActivityWatcher',
  aidl = 'src/android/app/IActivityWatcher.aidl',
  import_path = 'src/',
  visibility = [
    '//src:'
  ],
)
这个是AIDL文件的,注意了,它编译时候会提示找不到文件,用把AIDL生成对应java文件copy到和aidl一样的目录才可以,buck不生成java的
前面提到的 activity 标签,他是调用了activity 命名的标签,现在贴这个标签出来
android_library(
  name = 'activity',
  srcs = glob(['src/**/*.java']),
  deps = [
    '//:res',
    '//:IActivityWatcher',
    '//:android-support-v4',
    '//:native_libs',
  ],
  visibility = [
    'PUBLIC'
  ],
)
这是包含哪些代码文件的,下面引用就包括了jar so aidl res 的标签,于是执行这个activity就可以囊括全部了
prebuilt_native_library(
  name = 'native_libs',
  native_libs = 'libs',
)
so 的标签
prebuilt_jar(
  name = 'android-support-v4',
  binary_jar = 'libs/android-support-v4.jar',
  visibility = [
    'PUBLIC'
  ],
)

jar 标签
[android]
	target = android-19
[android]
  build_tools_version = 19.1.0
用19呢是为了避免高版本SDK的严格PNG检查,不然编译不通过,提示PNG 颜色通道什么鬼的错误
还有一个什么R.id 的常量错误





  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值