Почему Settings.bundle заставляет iTunes говорить, что мое приложение для iPhone недействительно?

#iphone #xamarin.ios #itunes #monodevelop

#iPhone #xamarin.ios #iTunes #monodevelop

Вопрос:

Хорошо, последние несколько месяцев я работал над приложением для iPhone, используя MonoTouch и MonoDevelop. За это время я смог развернуть приложение на свой телефон для целей отладки / тестирования, а также смог скомпилировать версии Adhoc для моих работодателей, чтобы попробовать. Все это сработало нормально… до этой недели.

Последняя отправленная мной версия не попадет в iTunes и завершится ошибкой со следующей ошибкой:

 The app "Payload.ipa" could not be added to your iTunes library because it is not a valid app.
  

Итак, в основном ваша общая ошибка типа «что-то не так, но я не собираюсь говорить вам, что именно».

Мои первоначальные исследования, похоже, предполагали, что проблема может быть связана с именем приложения, содержащим специальные символы, но, поскольку я долгое время не менял название приложения, это не проблема. Я добавил версию пакета в info.plist, хотя, однако, удаление этого не решило проблему.

Итак, затем я просмотрел файлы в папке вывода и заметил, что Settings.bundle теперь включен (я добавил файл с именем Config.plist для хранения некоторых настроек, используемых приложением). В MonoDevelop я изменил параметры, чтобы сделать его «Содержимым» и «Всегда копировать», как это было предложено в руководствах, которым я следовал. Это отлично работает при запуске приложения в симуляторе или на моем телефоне через MonoDevelop. Но когда я упаковываю приложение в виде файла .ipa, iTunes сообщает, что приложение недействительно. Если я удалю Settings.bundle, iTunes примет его.

Я читал, что опция «Всегда копировать» не требуется при настройке «Содержимого», но файл Settings.bundle по-прежнему отображается в папке output (bin), даже если для параметра установлено значение «Не копировать».

Я также подумал, что, возможно, мне пришлось изменить имя на Root.plist, потому что это то, что используется в примерах, и, возможно, так и должно быть. Но опять же изменение имени ничего не изменило.

Итак, мне просто интересно, сталкивался ли кто-нибудь еще с этой проблемой и как вы ее решаете?

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

1. Вы пробовали использовать TestFlightApp.com ? Я бы рекомендовал использовать его для бета-тестирования через iTunes. Если ваша сборка AdHoc работает на телефоне при развертывании из MonoDevelop, то она должна работать таким же образом в iTunes.

2. Я еще не пробовал TestFlight, но сейчас смотрю на него. Я не уверен, как это решит проблему, поскольку ранее просто отправлял по электронной почте файл .ipa людям, которые в нем нуждались, и заставлял их синхронизировать через iTunes. сработало. Но, сказав это, стоит попробовать.

3. Есть ли у вас настройки этих телефонов на вашем портале подготовки iOS? Простой способ сделать это — взять каждый телефон, подключить его к компьютеру Mac и нажать «Использовать для разработки» в органайзере XCode. Другой способ сделать это — попросить их ввести номер на их телефоне, но я считаю, что TestFlight автоматизирует этот процесс для вас.

4. Да, все это было настроено и работает. Я также подумал, что, возможно, срок действия профиля подготовки истек, но он все еще действителен и из памяти, что обычно выдает мне другую ошибку. Я запустил TestFlight, и это определенно похоже на способ тестового развертывания. Как описано выше (и ниже) Settings.bundle вызывает проблему. Удаление этого файла из папки полезной нагрузки заставляет приложение работать.

Ответ №1:

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

Развертывание приложения с Settings.bundle, включенного в полезную нагрузку, не будет установлено на телефон даже с помощью TestFlight. Однако я решил попробовать без этого файла, чтобы посмотреть, будет ли приложение работать без него, и, к моему удивлению, оно работает.

Это немного раздражает, поскольку ранее простое копирование всех файлов из выходного каталога в каталог полезной нагрузки работало нормально. Я все еще не уверен, почему возникает проблема при наличии Settings.bundle или даже почему он есть, если он не нужен.

Ответ №2:

Я столкнулся с той же проблемой, и после нескольких часов исследований я обнаружил, что разветвление ресурса «settings.bundle» было потеряно, потому что я создавал / изменял его в разделе FAT32. Вы должны создать settings.bundle в разделе OSX или восстановить разветвление ресурсов.