Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/biocross/unlimit

Test your iOS app on device bypassing apple's 100 device limit, by automatically switching to your personal team 📲
https://github.com/biocross/unlimit

apple developer-tools ios xcode

Last synced: 3 months ago
JSON representation

Test your iOS app on device bypassing apple's 100 device limit, by automatically switching to your personal team 📲

Awesome Lists containing this project

README

        

# Unlimit 🚀📲 [![Gem Version](https://badge.fury.io/rb/unlimit.svg)](https://badge.fury.io/rb/unlimit) ![CI status](https://img.shields.io/github/workflow/status/biocross/unlimit/Ruby)

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](https://github.com/biocross/unlimit#do-i-require-a-paid-apple-developer-account-to-use-this) 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](https://www.mokacoding.com/blog/ruby-for-ios-developers-bundler/). It's highly recommended you use [**bundler**](https://bundler.io/) to maintain consistent versions of tools like `cocoapods`, `fastlane` etc within your team.

To use unlimit, add this line to your app's Gemfile:

```ruby
gem 'unlimit'
```

And then install it using [bundler](https://bundler.io/) 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](https://github.com/biocross/unlimit#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:

```yaml
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](https://github.com/biocross/unlimit/issues/new), 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](https://opensource.org/licenses/MIT).