This repo shows how Airbnb builds its iOS applications using Buck. It is where we prototype new functionality with Buck before making changes to our internal repo. We hope you find it as useful as we do
# Install Buck make install_buck
Note: you may need to install Java 8 before
buck will run for you locally.
Cmd + U to run the unit tests for the
ExampleApp target inside Xcode.
Or, from the terminal you can run
You may run
make targets to see a list of Buck targets available to build/test/etc.
You may run
buck query "deps(//App:ExampleAppBinary)" --dot > result.dot to save Graphviz output of the dependency tree starting at the rule
//App:ExampleAppBinary. You may then run
dot -Tpng result.dot -o result.png to create a PNG image showing this dependency structure.
Generating an Xcode Project
To generate the project from the terminal, just run
make project. You can then run in the simulator or press
Cmd + U to run the tests.
You may also use breakpoints, just like normal when using the generated Xcode project.
Generating a Buck Local Xcode Project
Buck Local is a tool that generates an Xcode project which invokes Buck to do the build when you press the Build button in Xcode. It makes builds much faster while still allowing you to use Xcode as usual: jumping to definition, auto completion, debugging, etc., all works out of box.
To generate a Buck Local Xcode project, simply run
# generating and opening a Xcode project make project # building with Buck CLI make debug
- https://github.com/airbnb/BuckSample/blob/master/Pods/BUCK gives a few examples on how we build CocoaPods with Buck
- https://github.com/airbnb/BuckSample/blob/master/App/BUCK is the main build file which shows how we setup resources/assets and build the final binary/ipa file.
- https://www.youtube.com/watch?v=8OF7L3SdY5U "Fast reliable Swift builds with Buck" - Robbert van Ginkel
- https://www.youtube.com/watch?v=uvNI_E0ZgZU "Ludicrously Fast Builds with Buck" - Simon Stewart
Buck Build channel https://buckbuild.slack.com.