Pull to refresh

Как мы iOS приложение тестировали из-под Ubuntu

Reading time4 min
Views26K


В компании где я работаю наступила пора корпоративов тестирования нашего iOS приложения, и т.к. мако тут только у меня, а все остальные разработчики и, что самое главное, QA работают под Ubuntu, <irony>а значит айфонов у них нет</irony>, то пришлось придумать решение проблемы и избавить себя от мук передачи личного айфона в руки тестеров.

Если Вы сталкивались с подобной проблемой или просто интересуетесь темой шаринга одного мака с возможностью одновременной работы на нём, то прошу под кат.


Apple Remote Desktop


Сначала мы попробовали www.pieceable.com, вещь действительно хорошая, особенно с перспективами развития проекта, т.к. судя по главной его купили Facebook, но пока что скорость его работы оставляет желать лучшего, хотя самая идея (если кто не знаком с ней, то это запуск эмулятора на маке с последующей трансляцией картинки на клиенты) нам приглянулась.

Начиная с Mac OS X 10.6 Apple Remote Desktop (VNC, по сути дела, только тссс...) поддерживает Multi-user Screen Sharing, и это как раз то, что нам надо, ведь основная задача была не отвлекать от рабочего процесса iOS разработчика, который работает за этим Mac-ом.

Действия со стороны Mac


Настройки для Mac OS X 10.8 aka Mountain Lion (для остальных систем не должны сильно отличаться):
  1. Создаём юзера, например, SimulatorViewer;
  2. Идём в Settings -> Sharing -> Remote Managment, там настраиваем Allow access for: SimulatorViewer, там выбираем как минимум Observe + Control + Open And Quit Applications;
  3. Жмём на Computer Settings и выбираем там VNC viewers may control screen with password, а так же вводим пароль для VNC.

На этом настройка Mac OS X части закончена.

Действия со стороны Ubuntu


Для подключения к Mac-у будем использовать Remmina Remote Desktop Client, который уже присутствует в стандартной поставки Ubuntu, как мне сказали:) Прошу прощения за «чужой» скриншот, нет сейчас возможности сделать свой:

  1. Connection->New...
  2. Protocol: VNC — Virtual Network Computing;
  3. Server — IP адрес Mac-а (показывается на нём в окне Sharing да и вообще много где, взрослые уже)
  4. Вписываем в User и Password наши данные для юзера SimulatorViewer, которого мы создали чуть выше;
  5. Color Depth выставляем в High color (15 bit), можно и больше, если сеть позволяет), от тормозов значение особо не избавит:)


Можете попробовать уже присоединиться, должен отобразиться экран Mac OS X, при этом сессия её пользователя за компьютером не прервётся.

Настраиваем Xcode


Осталось лишь сделать так, чтобы simulator билды Xcode-а были доступны для нашего юзера. Я выбрал самый простой вариант, переместив build-директорию в /Users/Shared/:
  1. Выгоняем iOS-разработчика от Mac-а покурить на 5 минут, а сами в это время лезем в настройки Xcode, секция Locations;
  2. Выбираем Derived Data: Custom, путь /Users/Shared/Xcode/DerivedData;
  3. В Advanced... жмём на Shared Folder и вводим Build;
  4. Комментируем рандомную строчку в коде программиста;
  5. создаём исполняемый(!) файл /Users/Shared/run.sh с таким содержимым:
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app/Contents/MacOS/iPhone\ Simulator -SimulateApplication blah
    
  6. Заметаем следы и уходим от компьютера iOS-программиста.

Внимательный читатель заметит иденификатор blah, краткое объяснение: без него работать не будет мы специально задаём несуществующий путь и тогда симулятор попросит нас его указать при старте:)

Работа полученной системы


Как подсоединиться к рабочему маку мы уже разобрались, осталось запустить в нём симулятор и начать издеваться над программистом.

  1. Просим iOS разработчика собрать билд для симулятора(!);
  2. Заходим через VNC на наш мак (дальнейшие действия я описываю уже внутри машины, на которую зашли);
  3. Переходим в Finder-е в /Users/Shared/;
  4. Запускаем run.sh, который откроет симулятор с окном выбора файла;
  5. Если у нас приложение называется Habrahabr, то путь к нему будет такой:
    /Users/Shared/Xcode/DerivedData/Build/Products/Debug-iphonesimulator/Habrahabr.app
    


Если всё сделали правильно, то приложение запустится и можно начинать тестировать.

Appendix


В ходе тестирования встретились с некоторыми проблемами, которые я оформлю в виде FAQ:
FAQ
Q: У разработчика iMac 27'' и айфон головного мозга, нельзя ли сделать разрешение поменьше?
A: При работе через VNC Вы можеет спокойно менять разрешение экрана, а так же их конфигурацию. Настройки экрана -> Scaled, 1024x768

Q: На маке 2 монитора, как отобразить только один из них?
A: Просто зайдите в настройки экрана и нажмите Mirror Displays, тогда будет показан только один экран.

Q: При работе ощущаются тормоза, что делать?(
A: Мы перепробовали несколько VNC клиентов и их настроек, но везде присутсвует проблема лагов и медленного «умерания» коннекта, с чем это связано так и не нашли, потому что в целом тестеров устроило. Помогает переподключение.

Q: А что делать пользователям Windows?
A: Тут такое дело (с), что мы не нашли Win компьютера в офисе, но всё сводится к простейшему поиску VNC клиента под Win, который умеет коннектится к Apple Remote Desktop.


Заключение


По сути дела статья — собирательный образ Mac VNC + VNC Client + Xcode custom build path + Running Simulator with target application и была написана с целью избавить Вас от гугления данных тем.

Приветствуются советы по улучшению схемы, особенно узкого места в виде VNC и его медленной работы.
Спасибо за внимание!
Tags:
Hubs:
Total votes 64: ↑47 and ↓17+30
Comments10

Articles