Project

unlimit

0.02
No release in over 3 years
Low commit activity in last 3 years
Test your iOS projects on device despite the 100 device limit, by automatically switching to your personal team
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 1.12.0
~> 10.0

Runtime

 Project Readme

Unlimit 🚀📲 Gem Version CI status

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:

Xcode Device Limit Reached Error

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.