Многие из iOS и Mac-разработчиков рано или поздно сталкиваются с необходимостью разрабатывать приложения более чем на одном устройстве. Типичными примерами такой ситуации могут быть покупка нового Мака и необходимость разрабатывать приложения одновременно на домашнем и рабочем Маках. Сегодня мы поговорим о том, как это делается с наименьшими мыслительными затратами и без преждевременного изменения окраски волос разработчика в призрачно-белый цвет.

Все многообразие жизненных ситуаций, связанных с необходимостью разработки более чем на одной машине, в конечном итоге сводится к двум основным сценариям. Мы назовем их условно “Покупка нового Мака” и “Домашний и рабочий Маки”. Каждый из этих двух сценариев имеет свои особенности.

Сценарий 1 - Покупка нового Мака

Данный сценарий предполагает, что разработчик в силу определенных обстоятельств меняет свою девелоперскую машину. То есть:

  1. Осуществляется единоразовый перенос проектов с одной машины на другую.
  2. Осуществляется единоразовый перенос сертификатов разработчика, секретных ключей, профилей обеспечения (provisioning profiles).

На каждом из этих пунктов мы остановимся подробнее далее по тексту.

Сценарий 2 - Домашний и рабочий Маки

Второй сценарий предполагает, что разработчику необходимо осуществлять полный набор действий по разработке iOS/Mac приложения более чем на одной машине одновременно. Для простоты без потери общности мы будем предполагать, что машин у разработчика две - домашняя и рабочая. И хотя на практике этих машин может быть больше, порядок действий в этом случае будет оставаться таким же, как описан ниже.

Особенностями данного сценария являются:

  1. Необходимость поддерживать в актуальном состоянии код более чем на одной машине.
  2. Необходимость иметь возможность подписывать приложение для публикации секретным ключом разработчика более чем на одной машине.

Рассмотрим далее описанные особенности более детально.

Единоразовый перенос проектов

Тут все предельно просто: есть директории с проектами, их надо перенести с машины на машину. Это можно сделать множеством способов начиная с флэшки, заканчивая дропбоксом.

Поддержание в актуальном состоянии кода на нескольких машинах

С этой задачей прекрасно справляются системы контроля версий. Наиболее широко распространены сейчас Git и Hg (он же Меркуриал). В общем случае работа над проектом одного человека с двух машин может выглядеть так:

  1. В конце рабочего дня разработчик делает коммит и пуш.
  2. Придя домой, разработчик делает пулл, пишет код, делает коммит и пуш.
  3. Придя на работу на следующее утро, разработчик делает пулл, пишет код, далее см. пункт 1… И так далее.

В случае команды из двух и более разработчиков схема незначительно усложняется (при правильной организации работы. При неправильной - усложняется значительно), но суть остается та же.

Поддержка Git встроена на уровне Xcode, который имеет некоторый набор функций по управлению репозиторием. Сам репозиторий с проектом можно создать, например, в момент создания проекта. Чтобы меняться кодом, необходимо иметь remote репозиторий. Обычно это либо репозиторий компании, где ведется разработка, либо GitHub.

В нашей компании принято пользоваться при разработке Меркуриалом. У нас имеется наш собственный hg-сервер, который мы используем для хранения remote-репозиториев. Поскольку поддержки Hg в Xcode нет, мы используем SourceTree - удобный графический Git и Hg клиент для Windows и Мака от компании Atlassian.

Для тех, кто не имеет корпоративного hg-сервера, я могу порекомендовать воспользоваться сервисом Bitbucket от тех же самых Atlassian. Этот сервис весьма похож на GitHub, но умеет работать не только с git, но и с Hg. Кроме того, Bitbucket позволяет создавать бесплатно закрытые репозитории, за что в GitHub просят денег.

Перенос настроек разработчика с машины на машину

И единоразовый перенос сертификатов разработчика, секретных ключей, профилей конфигурации и возможность подписывать приложение с разных машин секретным ключом по сути осуществляются одинаково. Для простоты описания, будем считать, что мы ведем разработку в Xcode 5. Для более ранних версий Xcode часть действий (например, экспорт секретных ключей и сертификат разработчика) осуществляется руками. Xcode 5 значительно облегчает нам жизнь в этом плане. Даже если Вы ведете разработку на более ранней версии Xcode, Вы все равно можете проделать описанную ниже процедуру для переноса секретных ключей и сертификатов разработчика с помощью Xcode 5.

Для начала нам потребуется машина, на которой происходило первоначальное воздание секретного ключа разработчика и куда устанавливался сертификат. На этой машине необходимо запустить Xcode 5, далее перейти в Настройки (Preferences) и выбрать вторую вкладку - Аккаунты (Accounts). В нижней левой части окна (под идентификаторами Apple ID) расположена маленькая кнопка с шестеренкой, которую необходимо нажать (см. рис. 1), и выбрать пункт Export Accounts.

Экспорт Private key и Development Certificate в Xcode 5

Рис. 1. Экспорт Private key и Development Certificate в Xcode 5


В открывшемся окна задайте имя файла и пароль (без пароля нельзя, я пробовал), затем сохраните полученный файл с расширением .developerprofile. В данном файле содержится вся информация, необходимая для того, чтобы иметь возможность подписывать Ваши приложения Вашими секретными ключами.

После этого полученный файл необходимо перенести на другую машину и проделать процедуру импорта этого файла.

Импорт файла осуществляется на той же вкладе Аккаунты (см. рис. 2), только теперь в меню необходимо выбрать пункт Import Account.

Импорт Private key и Development Certificate в Xcode 5

Рис. 2. Импорт Private key и Development Certificate в Xcode 5


После завершения импорта Вы сможете подписывать свои приложения, например, для публикации в TestFlight или App Store с обеих машин - старой и новой.

Для того, чтобы получить актуальный набор профилей обеспечения, относящихся с той или иной учетной записи разработчика достаточно в том же окне выбрать учетную запись слева, а затем нажать на кнопку View Details (см. рис. 3).

Просмотр подробной информации об аккаунте разработчика

Рис. 3. Просмотр подробной информации об аккаунте разработчика


Далее необходимо нажать кнопку Обновить в левой нижней части открывшегося модального окна (см. рис. 4).

Обновление профилей обеспечения

Рис. 4. Обновление профилей обеспечения


После этого на вашем устройстве появится актуальный набор профилей обеспечения.

Заключение

Как видно из предыдущего пункта, для того, чтобы иметь возможность подписывать разработанные приложения секретным ключом более чем на одном Маке, необходимо иметь доступ к тому Маку, на котором этот секретный ключ был создан. В жизни случается всякое, иногда получить доступ к изначальному Маку не представляется возможным.

Поэтому я настоятельно рекомендую Вам прямо сейчас пойти и сделать бэкап Вашего сертификата разработчика и секретного ключа при помощи процедуры экспорта, описанной выше, а затем положить его в надежное место, откуда его в случае необходимости можно будет получить.