Неизвестный и невоспроизводимый сбой вызывает отклонение App Store - PullRequest
4 голосов
/ 04 июня 2010

После подачи заявки несколько раз мы продолжаем получать следующий ответ:

Благодарим Вас за отправку моего приложения на Магазин приложений. Мы рассмотрели ваш приложение и определили, что мы не может опубликовать эту версию вашего iPad приложение в App Store, потому что Мое приложение падает на iPad работает iPhone OS 3.2 и Mac OS X 10.6.2. мой Приложение вылетает при запуске. К сожалению, журналы сбоев не имеют было сгенерировано.

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

Что может привести к прекращению работы приложения таким образом? При каких условиях тестируется приложение, которое не может быть найдено в среде разработки? Может ли это быть результатом проблемы с подписанием, которую система проверки представлений просто не может перехватить?

Заранее спасибо.

Ответы [ 6 ]

4 голосов
/ 07 июля 2010

После нескольких недель борьбы с этим приложение было окончательно одобрено. Ключ: подписание коррупции. Следовательно, почему приложение запускается (или, по крайней мере, кажется, запускается с отображением заставки), а затем внезапно исчезает без журнала сбоя. Он не прошел предварительную проверку вздоха Springboard.

Хороший инструмент для проверки проблем с подписанием. Сообщает, имеет ли приложение действительную подпись:

codesign -vvvv MyApp.app

Когда я создавал приложение, я cp отправлял его на сетевое устройство хранения, где наш менеджер по продукту извлекал его и передавал в Apple. При распаковке на NAS подпись кода действительна. Но если вы скопировали сжатое приложение обратно с NAS и подтвердите его, оно не получится.

Урок: используйте новую утилиту XCode для подачи заявок.

2 голосов
/ 04 июня 2010

Несколько предложений:

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

  2. Использует ли ваше приложение веб-сервис? Это случилось со мной один раз, потому что в тот день, когда Apple проверяла приложение, веб-служба перестала работать. Это вызывает крах. Если это так, вы хотели бы добавить что-то, чтобы поймать это.

  3. Наконец, в журналах, которые Apple отправила вам, они отправили вам файл dsym? Если они это сделали, вы можете запустить atos из командной строки, и он преобразует адрес в символы. Это покажет вам, на какой нити и символе происходит сбой.

1 голос
/ 04 июня 2010

Убедитесь, что вы тестируете с различными настройками: с отключенным / включенным Wi-Fi, с отключенным 3G, включенным / выключенным режимом полета, отключенными службами определения местоположения и т. Д.

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

1 голос
/ 04 июня 2010

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

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

0 голосов
/ 04 июня 2010

Мой подход заключается в том, чтобы убедиться, что компиляция абсолютно чиста как в статическом анализаторе (это НЕ опционально, это сэкономит вам время!), Так и для самой сборки. Затем установите все как описано на странице CocoaDev 'NSZombie . Затем убедитесь, что у вас iPod с версией 3.2 (реальное оборудование, а не симулятор) и тестируйте, тестируйте, тестируйте. Сделайте это с доступной и недоступной сетью, с устройством, почти полным и недавно восстановленным, все возможные варианты. Запустите его с активным отладчиком и отключенной сборкой релиза. Используйте Утечки, Инструменты и все другие инструменты, чтобы заглянуть туда и лучше понять происходящее. Если вы исчерпываете все возможности, которые вам придется просить у Apple, чтобы узнать больше подробностей, но держу пари, вы обнаружите проблему - одна из самых важных вещей при отладке такой проблемы - попытаться забыть все, что вы, наверняка, знаете, начать с начала.

0 голосов
/ 04 июня 2010

Ой! Это сложный вопрос. Раньше такое случалось, но казалось, что оно воспроизводимо, когда я переключаюсь на другое устройство (iPhone 3G против 3Gs и т. Д.). В вашем случае, похоже, вы только iPad, так что это может не помочь. Я полагаю, что между 3G и Wifi есть разница, но я был бы очень удивлен, если бы это вызвало сбой одного, а не другого.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...