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

IPA, созданная с помощью Xcode-бота, не запускается для APNS, но выполняется, если она создается вручную с помощью самого Xcode или создается как архив с помощью Xcode

У меня есть машина для сборки CI с сервером Xcode и с помощью бота для создания сборки, однако .ipa, созданная через бот, не имеет права регистрироваться для токена APNS.

В частности, вызывается didFailToRegisterForRemoteNotificationsWithError и появляется предупреждение о запуске "Нет допустимой строки права доступа aps-environment, найденной для приложения".

Однако, если я создаю приложение на ПК разработки separte, или я сам его создаю на машине CI независимо от бота, тогда все в порядке.

Я широко использовал push-уведомления в нескольких приложениях, поэтому знайте, что сообщение "Нет достоверной" строки права доступа aps-environment, найденной для приложения "всегда появляется, если приложение не подписано с правильными профилями. Тем не менее, я абсолютно на 100% подтвердил, что приложение создается с теми же профилями при запуске как часть сборки бота, когда я его создаю вручную.

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

Что еще я использовал эту ту же самую машину CI, которая ранее создавала это приложение, используя Jenkins (который также запускался как система) для push и работает!

Это то, что я сделал/проверил:

1) Загрузите проект вручную на рабочий стол, откройте в Xcode и проверьте, что подписи идентификации и профилей подшивки поданы в соответствии с настройками сборки. Создайте и запустите его вручную, используя Xcode → он работает Загрузите проект косвенно через бота как часть его интеграционного прогона. Откройте проект, загруженный Bot в Xcode (сервер Xcode загружает его в:/Library/Server/Xcode/Data/BotRuns//Cache/NNNN). Сделайте то же самое, проверьте личность подписывания и профили обеспечения. ОНИ ИДЕНТИЧНО тем, которые используются при создании на рабочем столе

ОК, поэтому проблема не связана с различием в фактических идентификаторах подписывания и профилях предоставления.

2) Когда вы запускаете Xcode вручную, он загружает профили подготовки в местоположение X, но Bot загружает профили подготовки в местоположение Y. Поэтому я изучил содержимое X и Y, чтобы убедиться, что ничего не пропало из Y ( если бы была сборка, на самом деле это не получилось, но это не так).

Чтобы быть абсолютно уверенными, что они идентичны, я скопировал все содержимое X в Y и снова запустил бот (они не получают лишнего веса от бота). Итак, теперь бот и настольные сборки используют то же самое копии профилей все еще есть разница, когда выполняется .ipa.

Кстати, местоположение X - это ~/Library/MobileDevice/Provisioning Profiles, а Y - это /Library/Server/Xcode/Data/ProvisioningProfiles.

3) Когда я строю вручную, он регистрируется как пользователь, но когда бот строит его как систему. Поэтому в цепочке ключей я попытался скопировать все сертификаты и ключи из пользовательского брелка в системный брелок. Да все равно это не имеет значения,.ipa, созданный ботом сборки, не работает должным образом, пока создается сборка, созданная вручную с помощью Xcode.

Это сводит меня с ума и уже потратил впустую дни, что еще я мог пропустить или мог бы попытаться разрешить это?

Любые предложения или идеи?

4b9b3361

Ответ 1

enter image description here

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

Я обнаружил, что причина неудачи сборки бота заключается в том, что бот не помещает права aps-environment в файл .app, хотя это право находится внутри встроенного .mobileprovision. Но XCode вставляет его в файл .app, если он создан вручную или создается архив.

Также я обнаружил, что могу заставить бота помещать необходимое право и связанную информацию в файл .app, если я использую Entitlements.plist.

Но это использование Xcode 5 - файлы права .plist ушли в прошлое, поэтому нет необходимости использовать его только для того, чтобы заставить бота разместить право на использование .app, поэтому я подозреваю, что он может быть бот-ошибкой.

Ответ 2

Вы пытаетесь разархивировать .ipa и проверять embedded.mobileprovision, они должны быть одинаковыми. Также просто убедитесь, что вы не используете профиль разработчика для выпуска сборки в боте/xcode.

Ответ 3

Съемка в темноте:

Хотя вы сказали, что профиль обеспечения отлично работает, когда вы запускаете сборку вручную, попробовали ли вы создать новый профиль обеспечения с нуля и использовать его на машине построения CI с помощью бота?