Отправить приложение OSX со вспомогательным приложением в его комплекте

17

Я с ума схожу с этой проблемой! У меня есть приложение, содержащее простое приложение-помощник, которое управляет элементом входа в основное приложение.

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

В настоящее время вспомогательное приложение подписано кодом и изолировано как основное приложение.

Ошибки:

  • Недопустимый профиль подготовки. Профиль предоставления, включенный в комплект, недействителен.

  • Недействительные права на подписание кода. Права в вашей сигнатуре пакета приложений не соответствуют той, которая содержится в профиле подготовки. Пакет содержит ключ, который не входит в профиль подготовки 'com.apple.application-identifier' в 'myapp.app/Contents/Library/LoginItems/helper.app'

  • Недействительные права на подписание кода. Права в вашей сигнатуре пакета приложений не соответствуют той, которая содержится в профиле подготовки. Пакет содержит ключ, который не включен в профиль подготовки 'com.apple.application-identifier' в 'myapp.app/Contents/MacOS/myapp'

задан MatterGoal 27.06.2012 в 17:45
источник
  • Используете ли вы хранилище iCloud в своем приложении? –  Tim 28.06.2012 в 22:58
  • Нет, я не использую его –  MatterGoal 29.06.2012 в 08:23
  • Но тогда вам вообще не нужен профиль подготовки? Возможно, есть записи в списке «iCloud Containers» ваших целевых итоговых настроек вашего приложения (основного / вспомогательного)? –  Tim 29.06.2012 в 10:12
  • Я решаю эту проблему путем подписания кода с терминала! Я не могу понять. –  MatterGoal 29.06.2012 в 14:40
  • Я получаю то же сообщение об ошибке при попытке проверить наше приложение. Я даже пытался проверить архивы, которые были успешно отправлены до этого, и также получил ту же ошибку. –  roustem 07.07.2012 в 01:25
Показать остальные комментарии

4 ответа

20

Для всех, кто сталкивается с этой проблемой, вам больше не нужно кодовое имя вспомогательного приложения, просто удалите «embedded.provisionprofile» из вспомогательного приложения в xarchive, и вы не можете представить никаких проблем.

    
ответ дан seanalltogether 07.12.2012 в 05:07
источник
  • Это сработало для меня. И основное, и вспомогательное приложение - это код, подписанный. Как основное, так и вспомогательное приложение имеет профили распределения распределения с отдельными идентификаторами пакетов. Первоначально я мог создавать и архивировать, но столкнулся с проблемами, проходящими проверку. После архивирования я выбрал архив и показал в Finder. Затем вручную удалите файл embedded.provisionprofile из приложения HELPER глубоко внутри архива. Затем вернитесь в Xcode, повторите проверку и отправьте очищенный архив. –  Craig Otis 20.02.2013 в 01:34
  • Спасибо Шон! Работал для меня. –  Todd 01.03.2013 в 22:28
  • Спасибо, Шон, ты просто убил мою головную боль! –  Jorge Leandro Perez 19.06.2013 в 14:51
  • пю! Какая жизнь спасает! Божий дар, Маша Аллах :) –  real 19 08.04.2014 в 22:10
  • Я выполнил следующие шаги и отправил приложение успешно, но получил сообщение от Apple через несколько минут: «... Недопустимая подпись - эта ошибка возникает, когда вы неправильно подписали установщик приложения. Для этого процесса требуется два сертификата: «Сертификат разработчика третьей стороны Mac» и «Сертификат разработчика сторонних разработчиков Mac». При подписании вашего пакета вам необходимо убедиться, что вы используете сертификат установщика для подписания вашего пакета. Убедитесь, что вы указываете этот сертификат при отправке ваше приложение через Xcode Organizer или при запуске productbuild из командной строки .... " –  real 19 08.04.2014 в 22:53
6

Единственное решение, которое, похоже, решает эту проблему, - это код и песочница приложения-помощника из Xcode, а затем:


Переконфигурировать приложение-помощник из терминала

codesign -f -s "3rd Party mac Developer Application:" -i "com.bundle.YOUR.HELPER" --entitlements path/to/helper/entitlements YEOR-HELPER.app



Удалите профиль подготовки из приложения-помощника, добавив «Запустить сценарий» в «Фазы сборки»

rm"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/Library/LoginItems/YOUR-HELPER.app/Contents/embedded.provisionprofile"

С помощью этого решения мы правильно представили наше приложение.     

ответ дан MatterGoal 08.07.2012 в 22:13
источник
  • Как насчет автоматического оба? rm "$ {BUILT_PRODUCTS_DIR} / $ {CONTENTS_FOLDER_PATH} /Library/LoginItems/YOURHELPER.app/Contents / $ {EMBEDDED_PROFILE_NAME}" и codeign -f -s "$ {CODE_SIGN_IDENTITY}" -i "com.identifier.YOURHELPER" - права доступа "$ {SOURCE_ROOT} /Path/To/YOURHELPER.entitlements" "$ {BUILT_PRODUCTS_DIR} / $ {CONTENTS_FOLDER_PATH} /Library/LoginItems/YOURHELPER.app" –  Douwe Maan 04.08.2012 в 18:22
  • Нужно ли снова явно указывать вспомогательное приложение? У моего вспомогательного приложения есть свой собственный BundleID, и у меня нет профиля подготовки производства. Тем не менее я мог архивировать основное приложение, и он прошел тест iTC (статус изменен на «ожидание проверки»). Может быть, он будет отклонен во время проверки Apple? : S –  zavié 19.08.2012 в 16:59
  • Большое спасибо, ты сделал мой день. Я всю неделю борется с этими чертовыми ошибками. Я бы дал вам +100, если бы мог: D –  Vlad 03.01.2013 в 16:18
  • Я, наконец, смог решить эту проблему, удалив файл embedded.provisionprofile из вспомогательного приложения, добавив следующий сценарий запуска: if [-f "$ {BUILT_PRODUCTS_DIR} / $ {PRODUCT_NAME} .app / Contents / embedded. provisionprofile "]; затем rm "$ {BUILT_PRODUCTS_DIR} / $ {PRODUCT_NAME} .app / Contents / embedded.provisionprofile" echo "Удалено встроенный профиль подготовки." else echo "Ничего не найдено" fi –  real 19 09.04.2014 в 06:15
1

У меня была 3-я ошибка, когда я случайно включил в свою цель некоторые сторонние .a-файлы. (Они необходимы для распространения не в App Store, но я забыл исключить их для сборки App Store). Ошибка не была слишком полезной при отслеживании этого!

    
ответ дан Graham Perks 21.11.2012 в 03:21
источник
0

Наконец-то я смог решить эту проблему, удалив файл embedded.provisionprofile из вспомогательного приложения, добавив следующий сценарий запуска:

if [ -f "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/embedded.provisionprofile" ];
then
    rm "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/embedded.provisionprofile"
    echo "Removed embedded provisioning profile."
else
    echo "No profile found"
fi
    
ответ дан real 19 09.04.2014 в 06:01
источник