Apple limits testing your app on a device to only 100 registered devices per developer account. If you work in a large team, this limit is often exhausted.
Unlimit is a simple tool to quickly run your app on your device without worrying about this limit. It achieves this by temporarily switching your Xcode Project to your free personal team (Personal Team
).
In a nutsell, unlimit fixes this:
Note that all changes unlimit makes to your project are local on your mac, and do not in anyway affect the configuration on your Apple Developer Portal.
Installation
Using RubyGems
Install unlimit by running:
$ gem install unlimit
Using Bundler
If your Xcode project does not have a Gemfile
yet, learn how to set it up here. It's highly recommended you use bundler to maintain consistent versions of tools like cocoapods
, fastlane
etc within your team.
To use unlimit, add this line to your app's Gemfile:
gem 'unlimit'
And then install it using bundler by executing:
$ bundle install
Usage
If you installed using gem install
, run this in the same folder as your .xcodeproj file:
$ unlimit-xcode
If you're using bundler
, run:
$ bundle exec unlimit
and unlimit will do it's magic.
If you need to perform additional actions after unlimit finishes, see custom scripts.
Parameters
All these parameters are optional, as unlimit can autodetect most of these. You can use these when unlimit is unable to figure them out, or to pass in overrides.
Parameter | Description | Example |
---|---|---|
project |
The .xcodeproj project file to use | --project MyApp.xcodeproj |
target |
The app target you want to run on your device | --target MyApp |
plist |
The path to your app's Info.plist file | --plist MyApp/MyApp-Info.plist |
team_id |
The Code Signing Team ID to use | --team_id A1B2C3D4E5A |
configuration |
The configuration file to use to read your custom scripts, defaults to .unlimit.yml (See below) |
--configuration config.yml |
keep_fabric |
Unlimit automatically disables Fabric's build phase script, to avoid the annoying New app ID added email sent by Fabric. Use this flag for keep the Fabric script. (Note: This does not affect Fabric/Crashlytics functionality, only disables it's dSYM uploading shell script) |
--keep_fabric |
version |
Print the current unlimit version you're using and exit | --version |
Custom Scripts
To perform additional actions after unlimit finishes, use custom scripts!
Just create an .unlimit.yml
file in your project root, and put in your scripts inside the custom_scripts
array:
For example, the following unlimit file runs a script to modify a plist using PlistBuddy:
custom_scripts:
- /usr/libexec/PlistBuddy -c "Set :AppGroup UNLIMIT_APP_GROUP_NAME" UNLIMIT_PLIST_PATH
Like the above script, You can use a few handy variables that unlimit will automatically replace with real values in your scripts:
Variable | Description |
---|---|
UNLIMIT_PROJECT_PATH |
The path to the current .xcodeproj |
UNLIMIT_TARGET_NAME |
The current target name |
UNLIMIT_PLIST_PATH |
The path to your target's Info.plist file |
UNLIMIT_TEAM_ID |
The Code Signing Team ID in use |
UNLIMIT_APP_BUNDLE_ID |
The unique app bundle ID generated by unlimit |
UNLIMIT_APP_GROUP_NAME |
The app group id generated by unlimit |
Feedback & Contributing
If unlimit does not work for you, please report it, I might have missed a lot of edge cases! Any feedback or feature suggesions are also encouraged.
Bug reports and pull requests are welcome.
FAQs
Why can't I just do it myself?
Well, you can, if your project is simple. However, if your project has capabilities like Push Notifications, Background Modes & App Extensions, things get complicated, since these require you to configure your Personal Team
with all these entitlements. Unlimit gets rid of all this mess, and gets you quickly up and running on your device.
What's the different between using unlimit and running on a registered device?
Well, since unlimit temporarily removes capabilities like App Extensions, Push Notifications & more from your project, you cannot test these features on your device when using your personal team.
How do I undo unlimit's changes?
We recommend you run unlimit when you have no staged changes, so that you can simple go back by running git reset --hard
when you're done testing on your device.
Do I require a paid apple developer account to use this?
No, you can get a personal team
using a free Apple Developer Account, since Apple now allows testing on device with a free developer accounts as well. As apple puts it:
Xcode 7 and Xcode 8 allow you to select the free personal team provided with your Apple ID for signing your app. This team allows you to build apps for your personal use on devices owned by you, but it does not allow you to code sign apps destined for the App Store or for enterprise use.
You can identify this account by looking in the accounts tab of the Xcode preferences. It is also displayed in the team menu displayed in a target's general build settings. Your personal account will be the account with the string '(Personal Team)' beside the name.
Source: https://developer.apple.com/library/archive/qa/qa1915/_index.html
License
The gem is available as open source under the terms of the MIT License.