1. 程式人生 > >使用 buck 打包 Android( 使用OkBuck給Android Studio+gradle生成 buck 指令碼)

使用 buck 打包 Android( 使用OkBuck給Android Studio+gradle生成 buck 指令碼)

一、安裝Buck

Buck是一個由Facebook推出的開源Android build工具。Buck可以加速你的Android構建,它通過獨立構件並行來發揮多核的效能。進一步的,它還可以通過跟蹤不變資源的情況下減少增量構建次數,從而以最小的資源集重建。它採用特殊的構建步驟,與Ant構建指令碼不同。Facebook稱,Buck最關注的就是速度,Buck的速度是Ant的兩倍。

0、缺陷

暫不支援databinding

1、環境

Buck當前只支援 Mac OS X 和 Linux
本文以Mac OS X平臺為例進行介紹
首先需要確保你的 OS X 滿足以下條件:

Oracle JDK 7
Apache Ant 1.8 (or newer)
Python 2.6 or 2.7
Git
C 編譯器:gcc或者clang
Android SDK

上述環境都要加入環境變數裡。


2、安裝Buck


1) 在終端裡執行如下命令:
git clone https://github.com/facebook/buck.git

如果下載不動的話,可以去網盤裡下載。 2) 加入環境變數
vim ~/.bash_profile
export PATH="/Users/liumeng/Documents/MySDK/buck-master/bin:$PATH" 
source ~/.bash_profile

3、安裝 Watchman

Facebook 開源的一個檔案監控服務,用來監視檔案並且記錄檔案的改動情況,當檔案變更它可以觸發一些操作,例如執行一些命令等等。安裝watchman,是為了避免Buck每次都去解析 build files,同時可以快取其他一些東西,減少編譯時間。Watchman安裝很簡單,指令碼如下:
brew install watchman

4、驗證

buck --help
如果一切正常的話,你會得到如下日誌資訊:
buck build tool
usage:
  buck [options]
  buck command --help
  buck command [command-options]
available commands:
  audit       lists the inputs for the specified target
  build       builds the specified target
  clean       deletes any generated files
  fetch       downloads remote resources to your local machine
  install     builds and installs an application
  project     generates project configuration files for an IDE
  query       provides facilities to query information about the target nodes graph
  quickstart  generates a default project directory
  server      query and control the http server
  targets     prints the list of buildable targets
  test        builds and runs the tests for the specified target
  uninstall   uninstalls an APK
options:
 --help         : Shows this screen and exits.
 --version (-V) : Show version number.


二、使用OkBuck 給 Android Studio + Gradle 一鍵生成 buck 指令碼


1、在現有工程的根目錄下的 build.gradle 新增

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        ...
        classpath "com.github.piasy:okbuck-gradle-plugin:0.4.2"
	...
    }
}

allprojects {
    ...
}

apply plugin: 'com.github.piasy.okbuck-gradle-plugin'
okbuck {
    target "android-21"
}
1) apply plugin 要放到 allprojects 下面; 2 resPackages用於指定每個Android library module和Android application module的R檔案的包名,你需要在resPackages裡面為每個module指定包名,將dummylibrary/app替換為你的module的名字,引號裡面的內容通常都是對應module的AndroidManifest.xml中的包名。
3) signConfigName是指

android {
    ...
    signingConfigs {
        release {
            ...
        }
    }
    ...
}

中的 signingConfig name

2、在工程根目錄下的.gitignore裡新增忽略配置


#buck
.buckconfig
*/BUCK
.buckd
.okbuck
buck-out

3、生成 buck 配置

./gradlew okbuck

4、編譯

在工程根目錄執行buck install app即可開始使用buck構建安裝了(假設你的application module叫app)

buck install app

三、使用Buck for IDEA 修改 生成後的 buck 檔案

目前 Okbuck 生成的 buck 檔案還有侷限性,需要手動修改,可以使用此外掛  參考 buck檔案 語法: