2017-01-20 99 views
20

Вчера я работал над новой версией своего приложения. Чтобы протестировать его на другом компьютере, Я перетащил его в папку, которая совместно используется несколькими компьютерами Mac, которыми я владею через облачную службу. Я думал, что это может быть ускоренный способ распространения приложения для тестирования на другом компьютере, на котором установлена ​​более старая версия macOS (10.11).Почему внезапно все мои приложения начали сбой с EXC_CRASH (Code Signature Invalid) после обмена одним из них через облачную службу?

Первое, что я заметил, это то, что я не мог запустить свою последнюю сборку на тестовом компьютере. Я исследовал и обнаружил, открыв папку .app, что все исполняемые файлы были отключены (они были похожи на файлы обычного документа, а не на значок, похожий на Terminal). Хорошо, подумал я, поэтому, видимо, вы не можете делиться такими приложениями. Вы должны всегда распространять их через образ диска или zip-файл, желательно с помощью изображения с подписанным диском, если вы не делаете этого через Mac App Store.

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

Однако, когда я вернулся домой и снова попытался работать над своим приложением, я заметил, что один из его помощников начал сбой при запуске с исключением EXC_CRASH (Code Signature Invalid). Затем я попытался запустить основное приложение, и это случилось. Я попытался удалить приложение с помощью моего деинсталлятора, и это произошло.

Итак, мой вопрос: как это могло быть? Почему все мои приложения начинают разбиваться, когда за несколько минут до того, как все мои приложения работали нормально?

+2

@ Kendra хорошо, по крайней мере, один из комментаторов нашел контекст, важный для них, чтобы понять мои намерения, поскольку была (небольшая) вероятность быть неправильно понятой, особенно если вы отвечаете на свой вопрос и размещаете ссылку на свой собственный блог, как было рекомендовано. – jvarela

ответ

18

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

spctl -a -v path/to/my/app 

и вот, я получил этот результат:

path/to/my/app: CSSMERR_TP_CERT_REVOKED 

Мое решение было идти на мой счет разработчика и нажмите на Отозвать чтобы удалить этот черный список, а затем создать новый, как указано на сайте.

К счастью, старые версии моего приложения не пострадали, потому что они были подписаны более ранним сертификатом. Однако будьте готовы принять много жалоб и сообщить своим пользователям повторно загрузить устаревшее приложение, если приложения, которые были распространены уже для ваших клиентов, были подписаны отозванным сертификатом. Они будут убиты при запуске с этим исключением EXC_CRASH. Просто скажите своим сотрудникам не иметь «блестящую» идею быстрого распространения приложений через облачный сервис. Вы можете в конечном итоге отозвать сертификат разработчика Mac.

+9

wait, значит, это означает, что если какой-нибудь случайный пользователь загрузит ваше приложение в dropbox/icloud/whatever, он получит сертификат разработчика, отозванный для всех? – mgrandi

+2

@mgrandi есть потенциал, но я не знаю, является ли это автоматизированной процедурой или этот черный список сертификатов курирует человек – jvarela

 Смежные вопросы

  • Нет связанных вопросов^_^