[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7755":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":15,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":16,"rankGlobal":10,"rankLanguage":10,"license":17,"archived":18,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":15,"starSnapshotCount":15,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},7755,"shenzhen","nomad-cli\u002Fshenzhen","nomad-cli","CLI for Building & Distributing iOS Apps (.ipa Files)","",null,"Ruby",4635,483,4637,0,30.05,"MIT License",true,false,"master",[],"2026-06-12 02:01:44","![Shenzhen](https:\u002F\u002Fraw.github.com\u002Fnomad\u002Fnomad.github.io\u002Fassets\u002Fshenzhen-banner.png)\n\n----\n\n**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. \n\nA maintained alternative to build your iOS apps is [gym](https:\u002F\u002Ffastlane.tools\u002Fgym) which uses the latest Xcode API. To distribute builds, you can use [fastlane](https:\u002F\u002Ffastlane.tools). More information on how to get started is available on the [iOS Beta deployment guide](https:\u002F\u002Fdocs.fastlane.tools\u002Fgetting-started\u002Fios\u002Fbeta-deployment\u002F).\n\n----\n\nCreate `.ipa` files and distribute them from the command line, using any of the following methods:\n\n- [iTunes Connect](https:\u002F\u002Fitunesconnect.apple.com)\n- [HockeyApp](http:\u002F\u002Fhockeyapp.net\u002F)\n- [Beta by Crashlytics](http:\u002F\u002Ftry.crashlytics.com\u002Fbeta\u002F)\n- [RivieraBuild](http:\u002F\u002Frivierabuild.com)\n- [TestFairy](https:\u002F\u002Fwww.testfairy.com\u002F)\n- [DeployGate](https:\u002F\u002Fdeploygate.com)\n- [Fly It Remotely (FIR.im)](http:\u002F\u002Ffir.im)\n- [蒲公英 (PGYER)](http:\u002F\u002Fwww.pgyer.com)\n- [Amazon S3](http:\u002F\u002Faws.amazon.com\u002Fs3\u002F)\n- FTP \u002F SFTP\n\nLess 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.\n\n> `shenzhen` is named for [深圳](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FShenzhen), the Chinese city famous for being the center of manufacturing for a majority of consumer electronics, including iPhones and iPads.\n> It's part of a series of world-class command-line utilities for iOS development, which includes [Cupertino](https:\u002F\u002Fgithub.com\u002Fnomad\u002Fcupertino) (Apple Dev Center management), [Houston](https:\u002F\u002Fgithub.com\u002Fnomad\u002Fhouston) (Push Notifications), [Venice](https:\u002F\u002Fgithub.com\u002Fnomad\u002Fvenice) (In-App Purchase Receipt Verification), [Dubai](https:\u002F\u002Fgithub.com\u002Fnomad\u002Fdubai) (Passbook pass generation), and [Nashville](https:\u002F\u002Fgithub.com\u002Fnomad\u002Fnashville) (iTunes Store API).\n\n## Installation\n\n```\n$ gem install shenzhen\n```\n\n### JSON Build Error\n\nUsers running Mac OS X Mavericks with Xcode 5.1 may encounter an error when attempting to install the `json` gem dependency. As per the [Xcode 5.1 Release Notes](https:\u002F\u002Fdeveloper.apple.com\u002Flibrary\u002Fios\u002Freleasenotes\u002FDeveloperTools\u002FRN-Xcode\u002FIntroduction\u002FIntroduction.html):\n\n> 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.\n\nTo work around this, install the `json` gem first with the following command:\n\n```\n$ ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install json\n```\n\n## Usage\n\n> 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\".\n\nShenzhen adds the `ipa` command to your PATH:\n\n```\n$ ipa\n\nBuild and distribute iOS apps (.ipa files)\n\n  Commands:\n    build                       Create a new .ipa file for your app\n    distribute:rivierabuild     Distribute an .ipa file over [RivieraBuild](http:\u002F\u002Frivierabuild.com)\n    distribute:hockeyapp        Distribute an .ipa file over HockeyApp\n    distribute:crashlytics      Distribute an .ipa file over Crashlytics\n    distribute:deploygate       Distribute an .ipa file over deploygate\n    distribute:fir              Distribute an .ipa file over fir.im\n    distribute:itunesconnect    Upload an .ipa file to iTunes Connect for review\n    distribute:pgyer            Distribute an .ipa file over Pgyer\n    distribute:ftp              Distribute an .ipa file over FTP\n    distribute:s3               Distribute an .ipa file over Amazon S3\n    distribute:testfairy        Distribute an .ipa file over TestFairy\n    info                        Show mobile provisioning information about an .ipa file\n    help                        Display global or [command] help documentation.\n\n  Global Options:\n    -h, --help           Display help documentation\n    -v, --version        Display version information\n    -t, --trace          Display backtrace when an error occurs\n```\n\n### Building & Distribution\n\n```\n$ cd \u002Fpath\u002Fto\u002FiOS Project\u002F\n$ ipa build\n$ ipa distribute\n```\n\n#### RivieraBuild Distribution\n\n```\n$ ipa distribute:rivierabuild -k API_TOKEN -a AVAILABILITY\n```\n\n> Shenzhen will load credentials from the environment variable `RIVIERA_API_TOKEN` unless otherwise specified.\n> To get the list of availability options, visit http:\u002F\u002Fapi.rivierabuild.com\n\n#### HockeyApp Distribution\n\n```\n$ ipa distribute:hockeyapp -a API_TOKEN\n```\n\n> Shenzhen will load credentials from the environment variable `HOCKEYAPP_API_TOKEN` unless otherwise specified.\n\n#### TestFairy Distribution\n\n```\n$ ipa distribute:testfairy -a API_KEY\n```\n\n> Shenzhen will load credentials from the environment variable `TESTFAIRY_API_KEY` unless otherwise specified.\n\n#### Crashlytics Beta Distribution\n\n```\n$ ipa distribute:crashlytics -c \u002Fpath\u002Fto\u002FCrashlytics.framework -a API_TOKEN -s BUILD_SECRET\n```\n\n> Shenzhen will load credentials from the environment variables `CRASHLYTICS_API_TOKEN` & `CRASHLYTICS_BUILD_SECRET`, and attempt to run the submit executable `submit` in the path to Crashlytics.framework specified by `CRASHLYTICS_FRAMEWORK_PATH` unless otherwise specified.\n\n\n#### DeployGate Distribution\n\n```\n$ ipa distribute:deploygate -a API_TOKEN -u USER_NAME\n```\n\n> Shenzhen will load credentials from the environment variable `DEPLOYGATE_API_TOKEN` and `DEPLOYGATE_USER_NAME` unless otherwise specified.\n\n#### FTP Distribution\n\n```\n$ ipa distribute:ftp --host HOST -u USER -p PASSWORD -P FTP_PATH\n```\n\n#### SFTP Distribution\n\n```\n$ ipa distribute:sftp --host HOST -u USER -p PASSWORD -P FTP_PATH\n```\n\n#### Amazon S3 Distribution\n\n```\n$ ipa distribute:s3 -a ACCESS_KEY_ID -s SECRET_ACCESS_KEY -b BUCKET\n```\n\n> Shenzhen will load credentials from the environment variables `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` and `AWS_REGION` unless otherwise specified.\n\n#### FIR (Fly it Remotely)\n\n```\n$ ipa distribute:fir -u USER_TOKEN -a APP_ID\n```\n\n> Shenzhen will load credentials from the environment variables `FIR_USER_TOKEN`, `FIR_APP_ID` unless otherwise specified.\n\n#### 蒲公英 (PGYER)\n\n```\n$ ipa distribute:pgyer -u USER_KEY -a APP_KEY\n```\n\n> Shenzhen will load credentials from the environment variables `PGYER_USER_KEY`, `PGYER_API_KEY` unless otherwise specified.\n\n\n#### iTunes Connect Distribution\n\n```\n$ ipa distribute:itunesconnect -a me@email.com -p myitunesconnectpassword -i appleid --upload\n```\n\n> Shenzhen will load credentials from the environment variables `ITUNES_CONNECT_ACCOUNT` and `ITUNES_CONNECT_PASSWORD` unless otherwise specified. If only an account is provided, the keychain will be searched for a matching entry.\n>\n> 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:\n> * My Apps -> [App Name] -> More -> About This App -> Apple ID\n>\n> 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 clicking `Always Allow` on the prompt will set this up for you.\n\n### Displaying Embedded .mobileprovision Information\n\n```\n$ ipa info \u002Fpath\u002Fto\u002Fapp.ipa\n\n+-----------------------------+----------------------------------------------------------+\n| ApplicationIdentifierPrefix | DJ73OPSO53                                               |\n| CreationDate                | 2014-03-26T02:53:00+00:00                                |\n| Entitlements                | application-identifier: DJ73OPSO53.com.nomad.shenzhen    |\n|                             | aps-environment: production                              |\n|                             | get-task-allow: false                                    |\n|                             | keychain-access-groups: [\"DJ73OPSO53.*\"]                 |\n| CreationDate                | 2017-03-26T02:53:00+00:00                                |\n| Name                        | Shenzhen                                                 |\n| TeamIdentifier              | S6ZYP4L6TY                                               |\n| TimeToLive                  | 172                                                      |\n| UUID                        | P7602NR3-4D34-441N-B6C9-R79395PN1OO3                     |\n| Version                     | 1                                                        |\n+-----------------------------+----------------------------------------------------------+\n```\n\n## License\n\nShenzhen is released under an MIT license. See LICENSE for more information.\n","Shenzhen 是一个用于构建和分发 iOS 应用 (.ipa 文件) 的命令行工具。它支持通过多种渠道（如 iTunes Connect、HockeyApp、蒲公英等）从命令行创建并发布 .ipa 文件，极大地简化了开发者向测试者或企业用户分发新版本应用的过程。基于 Ruby 语言开发的 Shenzhen 使用 Xcode 6 构建 API，虽然该 API 已经被弃用多年，但在特定条件下仍可作为快速部署 iOS 应用来使用的解决方案之一。需要注意的是，对于使用 Swift 3 或 watchOS 等较新技术栈的应用来说，建议转向采用最新 Xcode API 的替代方案如 fastlane 中的 gym 进行构建。Shenzhen 特别适合那些希望减少手动操作、提高自动化水平的小型团队或个人开发者，在不需要频繁更新底层技术栈的前提下快速迭代产品。",2,"2026-06-11 03:14:11","top_language"]