Eu tenho um aplicativo muito simples com uma única visualização, contendo vários UILabels. Ao ser executado no Simulador, o console Xcode retorna o erro:
libMobileGestalt MobileGestalt.c: 875: MGIsDeviceOneOfType não é compatível com esta plataforma.
O próprio Simulador mostra apenas uma tela branca. Também tentei executá-lo em um dispositivo de desenvolvedor com a mesma tela branca. Eu pesquisei a documentação, mas não consigo encontrar nenhuma referência a MGIsDeviceOneOfType
. O aplicativo foi escrito em Swift no Xcode 10 beta no macOS 10.14. Estou tentando executá-lo nos simuladores do iPhone 7-X, bem como no iPhone 7 de desenvolvimento, todos executando o software de destino (12.0).
Respostas:
MobileGestalt
O libMobileGestalt.dylib fornece um repositório central para todas as propriedades do iOS. Pode ser análogo ao Gestalt do OS X, do qual faz parte
CoreServices
. O Gestalt do OS X está documentado, por exemplo, o Gestalt Manager e está obsoleto a partir de 10.8. MobileGestalt é totalmente não documentado pela Apple, pois é uma biblioteca privada.MobileGestalt permite o teste de propriedades do sistema que podem ou não ser compatíveis em diferentes simuladores.
Muitos processos e aplicativos do sistema no iOS dependem do MobileGestalt, que está localizado em /usr/lib/libMobileGestalt.dylib. É mais uma biblioteca básica, mas suas APIs expostas seguem as convenções da estrutura da Apple e usam o
MG
prefixo da API, por exemploMGIsDeviceOneOfType
.Se você procurar MobileGestalt no sistema de arquivos do iOS, não o encontrará - como todas as bibliotecas e estruturas privadas, ele foi pré-vinculado a /System/Library/Caches/...etc. Se você gosta de hacking e pen-testing, pode usar ferramentas para extraí-los.
O MobileGestalt fornece muitas informações - cerca de 200 consultas - sobre vários aspectos do sistema. Aqui estão alguns.
Existem mais centenas
AirplaneMode
, por exemploMobileEquipmentIdentifier
, etc.MobileGestalt mantém uma tabela de códigos do seletor OSType. por exemplo c: 890 na mensagem: libMobileGestalt MobileGestalt.c: 890: MGIsDeviceOneOfType não é suportado nesta plataforma. Neste caso,
MGIsDeviceOneOfType
é um método da biblioteca MobileGestalt .Em vez de verificar a versão do simulador, há um seletor separado para consultar diretamente os recursos do simulador. As mensagens provavelmente indicam incompatibilidades entre as versões do simulador e versões do Xcode e / ou APIs não suportadas no simulador.
fonte
Eu o deixei cair com sucesso com a desativação do lixo do projeto.
Vá para < Nome do seu Projeto > -> Esquema -> Editar Esquema Em seguida, vá para Executar (menu à esquerda) e adicione a seguinte variável de ambiente:
Nome : OS_ACTIVITY_MODE, Valor : desativar
fonte
no meu caso: verifique o delegado do aplicativo para o método - didFinishLaunching. Tive privado e recebo o erro. Depois de remover "privado", tudo funciona bem
fonte
Acabei de instalar o Xcode 10 Beta e tive o mesmo problema. Executei o Xcode 9.4.1 e o problema foi embora.
fonte
Este erro ocorrerá apenas durante o teste / depuração em simuladores.
Quanto mais novo for o simulador, melhor.
Caso: Eu executo o simulador do iPhone 8 plus recebi esta mensagem no depurador.
Solução: mudei para um simulador mais recente sem mensagem de erro no depurador.
fonte
Encontrei isso ao abrir algum projeto do GitHub no Xcode 10.0.
A solução pragmática foi: basta clicar em 'Continuar execução do programa' várias vezes e provavelmente desabilitar o ponto de interrupção de exceção . Aparentemente, a exceção era recuperável.
Não é uma solução real, mas foi bom o suficiente para mim naquele ponto.
fonte
No meu caso, o destino de implantação do destino estava no iOS 8. Quando eu empurrei para o iOS 10.3, ele funcionou bem, tanto no simulador quanto no dispositivo.
fonte
Estou vendo esse problema. Usando o Xcode 10.1. Criou um novo projeto - não faz nada, exceto mostrar uma tela branca. Descobri que estava aparecendo no simulador de dispositivos mais antigos. Por exemplo, iPad Pro (12,9 polegadas) e iPad Pro (12,9 polegadas) (2ª geração) mostram o problema, mas o problema foi embora para o iPad Pro (12,9 polegadas) (3ª geração). Não aparece no simulador do iPhone XR.
Basicamente, parece irritante.
fonte
Se você tiver fontes fornecidas pelo aplicativo, você precisa adicionar ao Info.plist e verificar se o arquivo tem a Associação de destino selecionada
fonte
A maneira normal quando erros estranhos acontecem ajudou:
1) Projeto limpo;
2) Simulador de desligamento;
3) Reinstale os pods.
Xcode 10.
fonte
Para mim, com o simulador em questão em foco, selecionei Hardware-> Apagar todo o conteúdo e configurações.
Depois que o simulador foi reiniciado, iniciar meu aplicativo funcionou novamente, como esperado.
fonte
Device
->Erase All Content and Settings...
Fui para XCode -> Preferências -> Componentes Marquei todos os simuladores e a caixa de seleção para instalar atualizações automaticamente e, em seguida, "verificar e instalar agora" e fui embora por algumas horas enquanto todos eles atualizavam.
Agora o problema desapareceu - então, na verdade, é como mencionado. Novo XCode com Antigo - simuladores não atualizados.
fonte
Eu tive o mesmo problema, mas com MapKit, onde um MapView não apareceu, apenas a tela branca e o mesmo erro, MGIsDeviceOneOfType não é suportado nesta plataforma.
Resolvido isso corrigindo avisos de "layout ambíguo" vinculados ao objeto MapView. Agora está funcionando perfeitamente bem e os erros foram embora.
fonte
O que funcionou para mim foi mudar
general > Deployment Info > Main Interface
para CDVLaunchScreen e fazer o mesmo tambémgeneral > App Icons and Launch Images > Launch Screen File
para CDVLaunchScreen.Eu venho do Ionic, então isso pode não ser um problema para quem desenvolve em Swift / Objective-C.
fonte
Recentemente, atualizei para o Xcode
10.2
e quando tentei executar um projeto criado em uma versão anterior, mesmo erro ocorreu.O problema era que o simulador estava rodando antes de atualizar o Xcode.
A solução foi muito simples para mim sair do Simulador e reiniciá-lo para que ele possa obter as novas alterações. Não acho que o modelo do simulador (iPhone SE ou iPhone X) importe. Você só precisa reiniciar o simulador para que ele entre em vigor na nova atualização.
Eu recomendaria sair do Xcode e do simulador e reiniciar o Mac.
fonte
Recebi este erro ao chamar
.sync
na fila principal, o que causou um deadlock (DispatchQueue.main.sync {}
). Eu queria ligar.async
.fonte
Eu recebi este erro, ao tentar ler um arquivo json que está dentro do meu projeto e ele retornou nil, por isso eu obtive este erro.
Eu obtive nil por causa de algum erro de grafia no nome da fonte, aquele arquivo json estava segurando os nomes das fontes, após copiar e colar o nome da fonte eu obtive os dados e o erro corrigido.
Tentei quase todas as soluções dadas acima, nada funcionou, então depure com paciência, você vai saber o que está causando este erro e em algum momento ruim o xcode vai tocar na nossa vida :)
fonte
Eu estava enfrentando o mesmo problema, mas consegui eliminá-lo com os itens abaixo:
Eu espero que isso ajude.
fonte