- Notifications
You must be signed in to change notification settings - Fork492
CLI for Building & Distributing iOS Apps (.ipa Files)
License
nomad-cli/shenzhen
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Note: shenzhen uses the Xcode 6 build API, which has been deprecated for almost 3 years now. This causes problems if your app makes use of Swift 3, watchOS and other app targets.
A maintained alternative to build your iOS apps isgym which uses the latest Xcode API. To distribute builds, you can usefastlane. More information on how to get started is available on theiOS Beta deployment guide.
Create.ipa
files and distribute them from the command line, using any of the following methods:
- iTunes Connect
- HockeyApp
- Beta by Crashlytics
- RivieraBuild
- TestFairy
- DeployGate
- Fly It Remotely (FIR.im)
- 蒲公英 (PGYER)
- Amazon S3
- FTP / SFTP
Less cumbersome than clicking around in Xcode, and less hassle than rolling your own build script, Shenzhen radically improves the process of getting new builds out to testers and enterprises.
shenzhen
is named for深圳, the Chinese city famous for being the center of manufacturing for a majority of consumer electronics, including iPhones and iPads.It's part of a series of world-class command-line utilities for iOS development, which includesCupertino (Apple Dev Center management),Houston (Push Notifications),Venice (In-App Purchase Receipt Verification),Dubai (Passbook pass generation), andNashville (iTunes Store API).
$ gem install shenzhen
Users running Mac OS X Mavericks with Xcode 5.1 may encounter an error when attempting to install thejson
gem dependency. As per theXcode 5.1 Release Notes:
The Apple LLVM compiler in Xcode 5.1 treats unrecognized command-line options as errors. This issue has been seen when building both Python native extensions and Ruby Gems, where some invalid compiler options are currently specified.
To work around this, install thejson
gem first with the following command:
$ ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install json
For best results, set your environment localization to UTF-8, with
$ export LC_ALL="en_US.UTF-8"
. Otherwise, Shenzhen may return unexpectedly with the error "invalid byte sequence in US-ASCII".
Shenzhen adds theipa
command to your PATH:
$ ipaBuild and distribute iOS apps (.ipa files) Commands: build Create a new .ipa file for your app distribute:rivierabuild Distribute an .ipa file over [RivieraBuild](http://rivierabuild.com) distribute:hockeyapp Distribute an .ipa file over HockeyApp distribute:crashlytics Distribute an .ipa file over Crashlytics distribute:deploygate Distribute an .ipa file over deploygate distribute:fir Distribute an .ipa file over fir.im distribute:itunesconnect Upload an .ipa file to iTunes Connect for review distribute:pgyer Distribute an .ipa file over Pgyer distribute:ftp Distribute an .ipa file over FTP distribute:s3 Distribute an .ipa file over Amazon S3 distribute:testfairy Distribute an .ipa file over TestFairy info Show mobile provisioning information about an .ipa file help Display global or [command] help documentation. Global Options: -h, --help Display help documentation -v, --version Display version information -t, --trace Display backtrace when an error occurs
$ cd /path/to/iOS Project/$ ipa build$ ipa distribute
$ ipa distribute:rivierabuild -k API_TOKEN -a AVAILABILITY
Shenzhen will load credentials from the environment variable
RIVIERA_API_TOKEN
unless otherwise specified.To get the list of availability options, visithttp://api.rivierabuild.com
$ ipa distribute:hockeyapp -a API_TOKEN
Shenzhen will load credentials from the environment variable
HOCKEYAPP_API_TOKEN
unless otherwise specified.
$ ipa distribute:testfairy -a API_KEY
Shenzhen will load credentials from the environment variable
TESTFAIRY_API_KEY
unless otherwise specified.
$ ipa distribute:crashlytics -c /path/to/Crashlytics.framework -a API_TOKEN -s BUILD_SECRET
Shenzhen will load credentials from the environment variables
CRASHLYTICS_API_TOKEN
&CRASHLYTICS_BUILD_SECRET
, and attempt to run the submit executablesubmit
in the path to Crashlytics.framework specified byCRASHLYTICS_FRAMEWORK_PATH
unless otherwise specified.
$ ipa distribute:deploygate -a API_TOKEN -u USER_NAME
Shenzhen will load credentials from the environment variable
DEPLOYGATE_API_TOKEN
andDEPLOYGATE_USER_NAME
unless otherwise specified.
$ ipa distribute:ftp --host HOST -u USER -p PASSWORD -P FTP_PATH
$ ipa distribute:sftp --host HOST -u USER -p PASSWORD -P FTP_PATH
$ ipa distribute:s3 -a ACCESS_KEY_ID -s SECRET_ACCESS_KEY -b BUCKET
Shenzhen will load credentials from the environment variables
AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
andAWS_REGION
unless otherwise specified.
$ ipa distribute:fir -u USER_TOKEN -a APP_ID
Shenzhen will load credentials from the environment variables
FIR_USER_TOKEN
,FIR_APP_ID
unless otherwise specified.
$ ipa distribute:pgyer -u USER_KEY -a APP_KEY
Shenzhen will load credentials from the environment variables
PGYER_USER_KEY
,PGYER_API_KEY
unless otherwise specified.
$ ipa distribute:itunesconnect -a me@email.com -p myitunesconnectpassword -i appleid --upload
Shenzhen will load credentials from the environment variables
ITUNES_CONNECT_ACCOUNT
andITUNES_CONNECT_PASSWORD
unless otherwise specified. If only an account is provided, the keychain will be searched for a matching entry.The
-i
(or--apple-id
) flag is "An automatically generated ID assigned to your app". It can be found via iTunes Connect by navigating to:
- My Apps -> [App Name] -> More -> About This App -> Apple ID
For a fully hands-free upload, in a CI environment for example, ensure your iTunes Connect credentials are stored in your keychain, and that the keychain item has the Validation app in its 'Always allow access' list. Running Shenzhen once with the
--save-keychain
flag, and clickingAlways Allow
on the prompt will set this up for you.
$ ipa info /path/to/app.ipa+-----------------------------+----------------------------------------------------------+| ApplicationIdentifierPrefix | DJ73OPSO53 || CreationDate | 2014-03-26T02:53:00+00:00 || Entitlements | application-identifier: DJ73OPSO53.com.nomad.shenzhen || | aps-environment: production || | get-task-allow: false || | keychain-access-groups: ["DJ73OPSO53.*"] || CreationDate | 2017-03-26T02:53:00+00:00 || Name | Shenzhen || TeamIdentifier | S6ZYP4L6TY || TimeToLive | 172 || UUID | P7602NR3-4D34-441N-B6C9-R79395PN1OO3 || Version | 1 |+-----------------------------+----------------------------------------------------------+
Shenzhen is released under an MIT license. See LICENSE for more information.
About
CLI for Building & Distributing iOS Apps (.ipa Files)
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.