И еще немного про сервис тестирования iOS-приложений Test Flight

    Спасибо Shmatlay за сегодняшний обзор сервиса Test Flight.
    Поскольку в нашей компании мы им тоже пользуемся и достаточно активно, не могу не вставить свои пять копеек по поводу указанного сервиса, основываясь на опыте его эксплуатации.
    Если кто-то пропустил указанный пост, кратко поясню, что Test Flight — это сервис, упрощающий тестирование приложений для iOS-устройств путем облегчения процесса сбора кодов тестовых устройств (UDID-ов), а также путем более легкого распространения подписанных для тестеров билдов Вашего приложения. Ну и плюс, можно видеть, сколько раз приложение запускали, сколько раз оно падало, а также получать некоторую отладочную информацию.

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

    2. Для распространения своих приложений между пользователями необходимо будет получить ad-hoc distribution profile, либо если разработки приложения ведется с использованием корпоративной учетки, соответствующий ей [enterprise] distribution profile (не помню, как он точно называется). Следовательно, UDID-ы устройств придется руками брать из писем потенциальных-бетатестеров, идти на сайт developer.apple.com, и регистрировать их для подписи ad-hoc приложения. Тут, к сожалению, от этого никуда уйти не удалось.

    3. Как показала практика, приложения, в которых TestFlight SDK не был внедрен, но которые были подписаны UDID-ами тестеров прекрасно рассылаются через сервис тестерам с упомянутыми UDID-ами, так что если Вы по какой-либо причине не хотите, чтобы в Вашем приложении был чужой код (привет, TestFlight SDK!), то вполне можете этот самый SDK не внедрять — тестеры все равно смогут использовать Ваши приложения путем загрузки через сервис.

    4. Обращаю особое внимание на то, что посредством ad-hoc распространения приложений и тестирования ad-hoc сборок Вы можете использовать не более 100 UDID-ов в год для приложений подписанных учетной записью индивидуального разработчика. Это напоминание будет полезно для тех, кто планирует выпустить более 3-4 приложений за [проплаченный за 100 долларов] год и широко тестировать их среди народных масс. Эппловское ограничение в 100 устройств при использовании сервиса никуда не девается! (Хотя, полагаю, что это и так всем понятно, но мало ли)

    5. Для сборки подписанных билдов у разработчиков сервиса есть хорошие (хотя и не самые актуальные) гайды. Для Xcode 3 мануал тут, для Xcode 4 — тут. Для успешного создания архива с билдом достаточно строго следовать этим инструкциям. Обращаю внимание пользователей Xcode 4, что для их версии инструкции пункт 2 в последних сборках Xcode потерял актуальность, никакой подгруппы Code Signing при создании нового файла теперь нет и в помине. Вместо этого, Вам необходимо создать обыкновенный .plist-файл с именем, например, Entitlements.plist и прописать его в правильной строке согласно инструкции ребят из TestFlight. Не раз и не два сталкивался с ситуацией, когда в результате каких-то неправильных манипуляций с файлом Entitlements.plist, в результате создания архива приложения вылезало предупреждение, что-де произошла ошибка подписывания приложения и приложение не подписано. В этом случае, настоятельно рекомендую проверить еще раз все ли Вы сделали по преложенной выше инструкции, а если все сделано правильно, но все равно предупреждение вылезает, попробуйте удалить Entitlements.plist и сделать его заново. Я уделяю этому особое внимание потому, что если Вы будете распространять билд приложения, полученные с предупреждением о неправильной или отсутствующей подписи, то Ваши тестировщики просто не смогут установить это приложение. Верным признаком такой проблемы являются жалобы тестировщиков вида «я начинаю скачивать приложение, потом оно неожиданно говорит, что установка не может быть завершена и установка прекращается». В этом случае либо приложение было не подписано для данного тестировщика (а точнее его UDID-а устройства), либо произошла описанная ошибка с подписью приложения на этапе создания его билда из архива.

    6. Внедрение SDK увеличивает размер билда приложения примерно на 300 Кб. Если вдруг по какой-то немыслимой причине для Вас настолько критичен размер приложения — имейте это в виду (автор этих строк как-то раз добился увеличения размера дистрибутива билда своего приложения вдвое, всего лишь внедрив TestFlight SDK).

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

    8. Некоторые пользователи обладают более чем одним устройством с iOS, при этом регистрируют в сервисе только одно из них после получения письма с инвайтом в тестирование, а потом недоумевают, почему на другом (других) iOS-устройствах приложение не запускается. В этом случае (опять же совершенно очевидное положение, но практика показывает, что есть люди, не до конца понимающие это) пользователю необходимо объяснить, что ему придется зайти на сайт Test Flight (или открыть письмо с инвайтом) на каждом устройстве, которое он хочет пометить как тестовое.

    9. В целом, сервис оставляет после использования весьма приятное впечатление, позволяя оперативно собирать UDID-ы и рассылать билды приложений. К этим двум основным вещам прикручены еще управление списками проектов (aka команд тестировщиков/чего-либо-еще), возможность видеть, кто из тестировщиков получил письмо с инвайтом, кто его прочитал, кто установил приложение и все в таком духе. Кстати о том, кто установил приложение. Установкой приложения считается момент начала загрузки приложения с сервера TestFlight. Если после этого установка приложения зависнет, завершится аварийно, либо произойдет еще что-то, выходящее из ряда вон (вроде вторжения пришельцев с Проксимы Центавра), у Вас в админке будет складываться полное впечатление, что пользователь приложение установил штатно. Не далее как сегодня был случай, когда на один iPhone приложение не хотело ставится (даже не загружалось), а на другой вставало отлично. Однако, это я тоже склонен списывать на собственные кривые руки.

    10. Помимо iOS других платформ пока не поддерживается.

    11. Сервис бесплатный и обещает, что базовый функционал, доступный сегодня, будет бесплатен всегда.

    Ну что же, спасибо за внимание, если возникнут какие-то вопросы по работе с Test Flight, их смело можно задавать в комментариях, постараюсь (постараемся) на них ответить.

    Комментарии 12

      0
      Поправка к пункту 2: если есть enterprise серт, то UDID'ы собирать у тестеров таки не надо.
        0
        Гм, а как оно определяет, на каких устройствах оно может работать, а на каких нет? Я просто про энтерпрайз не в курсе совсем, потому и интересуюсь.
          0
          enterprise серт работает на любых девайсах вообще, в этом то и есть его смысл.
            +2
            Как я понимаю, все-таки не на любых, а только на тех, которые имеют корпоративный provisioning profile (Enterprise Provisioning Profile) — stackoverflow.com/questions/3251291/does-an-iphone-enterprise-provisioning-profile-need-to-specify-phone-uuids-like

            Идея простая: если у Вас совсем настоящий энтерпрайз, то Вам не надо париться и собирать все UDID-ы, вы тупо берете и распространяете свой Enterprise Provisioning Profile на устройства, после чего на них можно ставить приложение. Описалово взято отсюда:

            In-House Distribution
            Enterprise developers may take advantage of a special distribution model that bypasses Apple’s App Store review process and permits installation of the applications on devices without configuring their UDIDs in the provisioning profile. This model, In-House Distribution, is designed for large organizations to distribute their own custom applications to their employees.

            The Enterprise Provisioning Profile may be preloaded on users’ devices when they install their organization’s iOS Configuration Profile or configure their device to use their organization’s Mobile Device Management (MDM) server. Alternatively, the provisioning profile may be installed manually just as is done with Ad-Hoc Distribution. The custom application may be pushed out to user’s devices through MDM or sent to individual users via Over-the-Air (OTA) Distribution.

            Согласитесь, если бы приложение для энтерпрайза можно было бы ставить вообще на любой iPhone, информационная безопасность предприятия была бы в большой опасности.
              0
              Provisioning Profile легко встраивается внутрь ipa. Такним образом этот ipa ставится вообще на любой iOS-девайс (и да, я говорю из личного опыта, у меня есть такой серт).
                0
                Если у Вас есть личный опыт — Вам виднее :) У меня такого опыта нету.
                  0
                  Подскажите, пожалуйста, каким образом Provisioning Profile можно встроить в ipa?
                  Поиск (правда не очень продолжительный) не дал результатов.
                  И актуально ли это встраивание для не enterprise?
                    +1
                    Как-то так:
                    /usr/bin/xcrun -sdk iphoneos PackageApplication -v "${APP_FILENAME}" -o "${BUILD_DIRECTORY}/${IPA_FILENAME}" --sign "${BUILD_IDENTITY}" --embed "${PP_PATH}" || failed "Cannot Archive"
            0
            Auralien, можно ли с помощью ТестФлай реализовать вот такое:
            habrahabr.ru/qa/17940/?
              0
              > 2.
              >… Следовательно, UDID-ы устройств придется руками брать из писем потенциальных-бетатестеров,
              > идти на сайт developer.apple.com, и регистрировать их для подписи ad-hoc приложения.
              > Тут, к сожалению, от этого никуда уйти не удалось.

              При заливке билда, TestFilightApp дает возможность скачать текстовый файл со списком устройств НЕ входящих в текущий profile.

              На сайте developer.apple.com в Provisioning Portal->Devices есть возможность этот файл проимпортировать и избежать муторных копипастов из email.
                0
                Чтобы не брать UDID-ы устройств руками, можно давать юзерам ссылку на UDID.io. Он позволяет получить UDID устройства в один тап, и его легко можно потом отправить девелоперу.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое