Приложение Xamarin.iOS аварийно завершает работу из-за отсутствия среды выполнения Mono; подходящее изображение не найдено; подпись кода заблокирована mmap

Я пытаюсь создать приложение Xamarin Forms со связанным расширением приложения для iOS. Моя структура решения выглядит следующим образом:

MyProject
  \BitThicket.MyProject                    -- Forms project
  \BitThicket.MyProject.Core               -- NET Standard 2.0 class library
  \BitThicket.MyProject.iOS                -- iOS project
  \BitThicket.MyProject.Extensions.Intents -- Intents project

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

Я ориентируюсь на iOS 11.1, и у меня есть действительный сертификат подписи и настроенный профиль подготовки. Я могу создать приложение и развернуть его на устройстве (мой iPhone 7+) из Visual Studio для Mac (7.2.2). Однако, когда отладчик пытается запустить приложение для меня, отображается пустая заставка, а затем приложение аварийно завершает работу. Отладчик никогда не подключается. Кстати, он точно так же вылетает, когда приложение запускается вручную на устройстве.

Я получил журналы устройства с помощью Xcode, и сбой выглядит так:

Incident Identifier: 948709A2-74AA-4E16-BEEA-072CFCF4AB38
CrashReporter Key:   ######################################
Hardware Model:      iPhone9,2
Process:             BitThicket.Turns.iOS [2457]
Path:                /private/var/containers/Bundle/Application/#####-##############-############/BitThicket.Turns.iOS.app/BitThicket.Turns.iOS
Identifier:          com.bitthicket.Turns
Version:             1.0 (1.0)
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.bitthicket.Turns [818]


Date/Time:           2017-11-24 09:41:15.3743 -0600
Launch Time:         2017-11-24 09:41:15.3041 -0600
OS Version:          iPhone OS 11.1.2 (15B202)
Baseband Version:    3.21.01
Report Version:      104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Termination Description: DYLD, Library not loaded: @rpath/Mono.framework/Mono | Referenced from: /var/containers/Bundle/Application/########-####-####-####-############/BitThicket.Turns.iOS.app/BitThicket.Turns.iOS | Reason: no suitable image found.  Did find: | /private/var/containers/Bundle/Application/########-####-####-####-############/BitThicket.Turns.iOS.app/Frameworks/Mono.framework/Mono: code signing blocked mmap() of '/private/var/containers/Bundle/Application/########-####-####-####-############/BitThicket.Turns.iOS.app/Frameworks/Mono.framework/Mono'
Triggered by Thread:  0

Filtered syslog:
None found

Thread 0 Crashed:
0   dyld                            0x0000000106722f1c __abort_with_payload + 8
1   dyld                            0x00000001067226f4 abort_with_payload_wrapper_internal + 100
2   dyld                            0x0000000106722720 fcntl + 0
3   dyld                            0x00000001066f8498 dyld::fastBindLazySymbol+ 17560 (ImageLoader**, unsigned long) + 0
4   dyld                            0x00000001066fb714 dyld::_main+ 30484 (macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 7376
5   dyld                            0x00000001066f521c _dyld_start + 68

Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x0000000000000006   x1: 0x0000000000000001   x2: 0x000000016d50a470   x3: 0x00000000000000a5
    x4: 0x000000016d50a070   x5: 0x0000000000000000   x6: 0x0000000000000000   x7: 0x00000000000002f0
    x8: 0x0000000000000020   x9: 0x0000000000000009  x10: 0x6f6e6f4d2f736b72  x11: 0x6f77656d6172662e
   x12: 0x726f77656d617246  x13: 0x2e6f6e6f4d2f736b  x14: 0x726f77656d617266  x15: 0x00276f6e6f4d2f6b
   x16: 0x0000000000000209  x17: 0x000000008000001f  x18: 0x0000000000000000  x19: 0x0000000000000000
   x20: 0x000000016d50a070  x21: 0x00000000000000a5  x22: 0x000000016d50a470  x23: 0x0000000000000001
   x24: 0x0000000000000006  x25: 0x00000001028f4000  x26: 0x0000000106736000  x27: 0x0000000106735f88
   x28: 0x000000016d50ba70   fp: 0x000000016d50a040   lr: 0x00000001067226f4
    sp: 0x000000016d50a000   pc: 0x0000000106722f1c cpsr: 0x00000000

Binary Images:
0x1028f4000 - 0x103e43fff BitThicket.Turns.iOS arm64  <###########################> /var/containers/Bundle/Application/########-####-####-####-############/BitThicket.Turns.iOS.app/BitThicket.Turns.iOS
0x1066f4000 - 0x106733fff dyld arm64  <##########################> /usr/lib/dyld

EOF

Кто-нибудь знает, что вызывает это? Кажется, на форумах Xamarin или в других местах не так много прямых ответов (включая SO, к сожалению). Я пробовал некоторые простые вещи, такие как перезапуск Visual Studio для Mac или удаление приложения с моего устройства и очистку/перестроение решения, но эти вещи, похоже, не помогают.

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


person Ben Collins    schedule 25.11.2017    source источник


Ответы (1)


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

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

Как только я исправил эти проблемы, я попробовал еще раз, и проблема все еще была у меня. Это, наконец, исчезло после перезагрузки моего Mac.

person Ben Collins    schedule 25.11.2017
comment
Спасибо за это, это произошло после того, как я использовал автоматическую подпись в своем приложении, перезагрузка (и чистая, хотя и не уверенная, требуется ли) сделали свое дело! :) - person WickedW; 02.03.2018