Подтвердить что ты не робот

Контрольный список перед выпуском до создания окончательной версии для App Store

Любопытно, какие практики люди узнали, прежде чем делать свою окончательную сборку и отправляться в App Store? Помимо перехода от Debug к выпуску и комментирования вызовов NSLog, какие другие основные и/или не такие основные вещи мы должны отслеживать?

4b9b3361

Ответ 1

Это хороший вопрос, и я хотел бы повторить некоторые ответы и добавить несколько своих. Я сделал этот ответ Community Wiki, не стесняйтесь добавлять к нему.

  • Удалите приложение с вашего устройства, отключите WiFi, вне сотовых данных, установите и испытайте приложение. Работает ли он должным образом (насколько это возможно без Интернета)? По крайней мере, говорит ли пользователь, что требуется сетевое подключение (если оно есть) или оно сбой?

  • Если вы используете CLLocationManager: удалите приложение, обновите его и запустите, но не разрешайте приложению иметь данные о местоположении. Применяется ли приложение хорошо или оно падает? По крайней мере, говорит ли пользователь, что он не может работать без данных местоположения (если это требование)? Работает ли он на iPod Touch, который делает все геопозиционирование только с помощью Wi-Fi?

  • Запустите приложение в симуляторе и для каждого контроллера просмотра выполните следующие действия: (a) В меню iPhone Simulator выберите "Оборудование" → "Имитировать предупреждение о памяти", (b) теперь перемещайтесь по своим приложение к другим контроллерам представлений и посмотреть, все ли работает, (c) повторить тест для другого контроллера представления.

  • Если вы поддерживаете устаревшую прошивку (например, iOS 3.1.3), установите приложение на устройство под управлением 3.1.3 и протестируйте его там (если у вас его нет, используйте симулятор 3.2).

  • Запустите приложение во время телефонного разговора или когда активна личная горячая точка. Правильны ли все макеты экрана (строка состояния 40 пикселей высотой вместо 20)? Удалили ли нижние 20px представления с экрана или правильно ли изменили его размер?

  • Принять телефонный звонок во время вашего приложения, он уходит в отставку и возобновляется правильно? Звуки от вашего приложения перестают воспроизводиться во время телефонного звонка?

  • Запустите приложение во время воспроизведения музыки, продолжает ли музыка воспроизводиться? Правильно ли ваши звуки смешиваются или угасают музыкально?

  • Тестируйте производительность медленнее devices с ограниченной оперативной памятью, такой как: iPhone 3G (128 МБ ОЗУ, процессор 412 МГц) или iPod Нажмите (1-й или 2-й ген).

  • Запустите статический анализатор Clang и исправьте (или, по крайней мере, понимаете) каждое предупреждение.

  • Убедитесь, что NSzombiesEnabled НЕТ в переменных среды (осторожно: не уверен, что это все еще проблема)

Ответ 2

Несколько вещей:

На самом деле я рекомендую не создавать конфигурацию сборки под названием "Распространение", как указано Apple, потому что я часто создаю специальные сборки для бета-тестеров. Я создаю две конфигурации сборки, один называется Ad Hoc, и один называется AppStore, поэтому я не смущен. Единственное различие между ними - наличие файла Entitlements.plist для сборки Ad Hoc. Таким образом, я могу как можно ближе проверить, что я буду представлять Apple.

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

Не принимайте ничего. Не предполагайте, что это небольшое изменение, внесенное вами в приложение, не повлияет ни на что другое. Murphy Law говорит, что это крошечное изменение приведет к сбою вашего приложения на всех iPod Touch или что-то в этом роде. Тестируйте, проверяйте, тщательно проверяйте между окончательным редактированием кода и представлением Appstore. Если вам нужно сделать небольшое изменение, то повторяйте, пока он не станет идеальным.

Помните, что если приложение не разбивается на 99,9% ваших пользователей, то 1 из каждых 1000 загрузок приведет к 1-звездному анализу.

Я использую статический анализатор Clang, Leaks и Object Allocations во время разработки, но я делаю дополнительный запуск этих инструментов перед отправкой на всякий случай.

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

Проверьте свое приложение со следующими конфигурациями, когда применимы сеть или местоположение:

  • iPod Touch
  • iPhone 3G
  • iPhone 3GS
  • iPhone в режиме полета
  • iPhone с Wi-Fi
  • iPhone с EDGE
  • Вызов телефона при использовании вашего приложения

Ответ 3

Вместо перехода на Release, я переключаюсь на "Распространение". Это копия Release, но именно так меня научили некоторые документы Apple и iPhoneDeveloperTips.

Важные моменты:

После окончательной сборки, но прежде чем спешить, чтобы закрепить приложение, откройте пакет, используя содержимое пакета Finder Show. Из-за некоторой ошибки в MacOS, которая укусила меня в версиях до Snow Leopard (и она все еще может быть там), если вы слишком быстро застегнете (используя пункт "Finder Compress" или "Archive" ), некоторые из ресурсов еще не созданы выгружаться в файл. Когда вы будете показывать содержимое пакета, содержимое будет обновлено. То, как вы заметили эту проблему, заключается в том, что размер вашего сжатого приложения будет от пятого до десятого или менее от ожидаемого размера. Вы можете подумать о себе: "Эй, эта утилита zip действительно отлично справляется с сжатием", но это не так. Эта проблема возникла бы в этот момент, а не во время тестирования, главным образом потому, что вы делаете "чистую все", и все ресурсы и содержимое пакета приложений начинаются пустым, а затем заполняются Xcode. И по какой-то причине, даже после того, как Xcode завершил создание файла, содержимое все равно на самом деле не существует, если вы сжимаете, но будете там, если бы посмотрели на них (вроде обратного Гейзенберга). Осторожно.

Другая область, на которую я трачу много времени, - это сделать хорошую резервную копию источников, после того как я ввел все последние изменения в SVN, создал новую ветвь и пометил файл. Мне также нравится, чтобы мой номер версии соответствовал моему номеру сборки/фиксации SVN, поэтому я всегда знаю, какая версия SVN соответствует моей версии. У меня эти два номера версии в моем info.plist и могут быть отключены пользователем приложения, когда они нажимают на я для информации. Например, текущий info.pist включает в себя:

<key>CFBundleShortVersionString</key>
<string>2.0a1</string>
<key>CFBundleVersion</key>
<string>346</string>

Есть разные мысли о том, как использовать CFBundleVersion. Это мой путь. Также полезна утилита командной строки, agvtool.

Как только приложение будет создано после сжатия, вы фактически не внесете каких-либо изменений в сжатую версию, перейдите в файл приложения и убедитесь, что он подписан с правильным сертификатом распространения, а не с вашим adhoc. Изучение использования утилиты командной строки, кода, полезно для такого рода проверки и отладки. Сначала сделав сжатую копию, вы убедитесь, что вы никоим образом не собираетесь изменять окончательную копию, которую Xcode передал вам, и что вы будете загружать ее на itunesconnect, если все выглядит хорошо.

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