deliver • snapshot • frameit • PEM • sigh • produce • cert • spaceship • pilot • boarding • dojo • scan
-------Get in contact with the developer on Twitter: @KrauseFx
Features • Installation • Usage • Tips • Need help?
dojo
is part of fastlane: connect all deployment tools into one streamlined workflow.
dojo
builds and packages Android apps for you. It takes care of all the heavy lifting and makes it super easy to generate a signed apk
file 💪
dojo
is a replacement for shenzhen.
xcodebuild clean archive -archivePath build/MyApp \
-scheme MyApp
xcodebuild -exportArchive \
-exportFormat ipa \
-archivePath "build/MyApp.xcarchive" \
-exportPath "build/MyApp.ipa" \
-exportProvisioningProfile "ProvisioningProfileName"
dojo
dojo
uses the latest APIs to build and sign your application which results in much faster build times.
| Dojo Features
--------------------------|------------------------------------------------------------
:rocket: | dojo
builds 30% faster than other build tools like shenzhen
🏁 | Beautiful inline build output
📖 | Helps you resolve common build errors like code signing issues
🚠 | Sensible defaults: Automatically detect the project, its schemes and more
🔗 | Works perfectly with fastlane and other tools
:package: | Automatically generates a apk
file
:bullettrain_side: | Don't remember any complicated build commands, just dojo
🔧 | Easy and dynamic configuration using parameters and environment variables
💾 | Store common build settings in a Dojofile
📤 | All archives are stored and accessible in the Xcode Organizer
💻 | Supports Android applications
sudo gem install dojo
Make sure, you have the latest version of the Xcode command line tools installed:
xcode-select --install
dojo
That's all you need to build your application. If you want more control, here are some available parameters:
dojo --workspace "Example.xcworkspace" --scheme "AppName" --clean
If you need to use a different xcode install, use xcode-select or define DEVELOPER_DIR:
DEVELOPER_DIR="/Applications/Xcode6.2.app" dojo
For a list of all available parameters use
dojo --help
If you run into any issues, use the verbose
mode to get more information
dojo --verbose
In general, if you run into issues while exporting the archive, try using:
dojo --use_legacy_build_api true
Set the right export method if you're not uploading to App Store or TestFlight:
dojo --export_method ad-hoc
To pass boolean parameters make sure to use dojo
like this:
dojo --include_bitcode true --include_symbols false
To access the raw xcodebuild
output open ~/Library/Logs/dojo
Since you might want to manually trigger a new build but don't want to specify all the parameters every time, you can store your defaults in a so called Dojofile
.
Run dojo init
to create a new configuration file. Example:
scheme "Example"
sdk "iphoneos9.0"
clean true
output_directory "./build" # store the ipa in this folder
output_name "MyApp" # the name of the ipa file
dojo
works great together with fastlane, which connects all deployment tools into one streamlined workflow.
Using fastlane
you can define a configuration like
lane :beta do
xctool
dojo(scheme: "MyApp")
crashlytics
end
You can then easily switch between the beta provider (e.g. testflight
, hockey
, s3
and more).
For more information visit the fastlane GitHub page.
dojo
uses the latest APIs to build and sign your application. The 2 main components are
xcodebuild
- xcpretty
When you run dojo
without the --silent
mode it will print out every command it executes.
To build the archive dojo
uses the following command:
set -o pipefail && \
xcodebuild -scheme 'Example' \
-project './Example.xcodeproj' \
-configuration 'Release' \
-destination 'generic/platform=iOS' \
-archivePath '/Users/felixkrause/Library/Developer/Xcode/Archives/2015-08-11/ExampleProductName 2015-08-11 18.15.30.xcarchive' \
archive | xcpretty
After building the archive it is being checked by dojo
. If it's valid, it gets packaged up and signed into an ipa
file.
dojo
automatically chooses a different packaging method depending on the version of Xcode you're using.
/usr/bin/xcrun xcodebuild -exportArchive \
-exportOptionsPlist '/tmp/dojo_config_1442852529.plist' \
-archivePath '/Users/fkrause/Library/Developer/Xcode/Archives/2015-09-21/App 2015-09-21 09.21.56.xcarchive' \
-exportPath '/tmp/1442852529'
dojo
makes use of the new Xcode 7 API which allows us to specify the export options using a plist
file. You can find more information about the available options by running xcodebuild --help
.
Using this method there are no workarounds for WatchKit or Swift required, as it uses the same technique Xcode uses when exporting your binary.
/usr/bin/xcrun /path/to/PackageApplication4Dojo -v \
'/Users/felixkrause/Library/Developer/Xcode/Archives/2015-08-11/ExampleProductName 2015-08-11 18.15.30.xcarchive/Products/Applications/name.app' -o \
'/Users/felixkrause/Library/Developer/Xcode/Archives/2015-08-11/ExampleProductName.ipa' \
--sign "identity" --embed "provProfile"
Note: the official PackageApplication script is replaced by a custom PackageApplication4Dojo script. This script is obtained by applying a set of patches on the fly to fix some known issues in the official Xcode PackageApplication script.
Afterwards the ipa
file is moved to the output folder. The dSYM
file is compressed and moved to the output folder as well.
fastlane
Toolchain
fastlane
: Connect all deployment tools into one streamlined workflowdeliver
: Upload screenshots, metadata and your app to the App Storesnapshot
: Automate taking localized screenshots of your iOS app on every deviceframeit
: Quickly put your screenshots into the right device framesPEM
: Automatically generate and renew your push notification profilesproduce
: Create new iOS apps on iTunes Connect and Dev Portal using the command linecert
: Automatically create and maintain iOS code signing certificatesspaceship
: Ruby library to access the Apple Dev Center and iTunes Connectpilot
: The best way to manage your TestFlight testers and builds from your terminalboarding
: The easiest way to invite your TestFlight beta testersscan
: The easiest way to run tests of your iOS and Mac app
Download and install the Provisioning Plugin.
Please submit an issue on GitHub and provide information about your setup
This project is licensed under the terms of the MIT license. See the LICENSE file.
This project and all fastlane tools are in no way affiliated with Apple Inc. This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. All fastlane tools run on your own computer or server, so your credentials or other sensitive information will never leave your own computer. You are responsible for how you use fastlane tools.