Se você estiver usando frameworks personalizados, você precisa colocá-lo dentro da seção "Binários incorporados" localizada no projeto Xcode na guia Destino / Geral.
Eu tenho uma estrutura personalizada e está listada em "Binários incorporados" no Projeto Xcode em Destino> Geral. Ainda estou tendo esse problema quando tento executar meus testes de unidade. Recentemente, atualizei as partes Swift do meu código para Swift 3 (de 2). Se isso ajudar ...
Mario A Guzman
@MarioAGuzman Como você corrigiu isso? Também enfrento o problema após a migração do Swift 3
iOS
@iOS Infelizmente não tive uma solução real. O problema se resolveu com o Xcode 8.3 que acabou de ser lançado.
Mario A Guzman
Por que isso precisa estar na seção Binários incorporados? Estou tentando usar o ObjectiveDropboxOfficial.framework. Eu estava recebendo esse erro, coloquei no Embedded e ele 'consertou'. No entanto, retirei-o novamente e ele permanece "consertado". Outros alvos que são configurados com o mesmo AFAICT falham. Os documentos de instalação da caixa de depósito não dizem para colocar em Embedded Frameworks.
Jim Leask
Isso ajudou. Além disso, certifique-se de não ter duplicatas em "Linked Frameworks and Libraries". Quando você o adiciona à seção Incorporado, ele o adiciona automaticamente à seção Vinculado.
milesmeow de
60
Para mim um simples Cleane Rebuildresolvido. Espero que ajude.
Limpar, Limpar pasta de compilação, excluir conteúdo da pasta Derived Data, instalar Pod (onde apropriado), reiniciar Xcode, reiniciar máquina; em seguida, passe um pouco de sangue de cordeiro na porta para uma boa medida
johnnyclem
1
Me ajudou também !!
Dmitriy Greh
Excluir o diretório e obter o último commit do git não ajudou, mas limpar e reconstruir ajudou lol
え る ま る
8
No meu caso, tive que amarrar pimenta e limão no batente da porta.
Naresh
1
Tive que sacrificar meu primeiro filho também, mas funcionou!
Andor Németh
26
Esse problema apareceu após a atualização do sistema para macOS 10.15.2 beta. Desativar "Thread Sanitizer" resolveu o problema (Xcode 11.2). Agora não consigo usar o Thread Sanitizer e tenho que esperar pela próxima atualização do sistema operacional.
Esta postagem responde às perguntas originais quando o problema surge nos simuladores Xcode 11.3 após a atualização para o Mac 10.15.2. Parece ser o bug da Apple, consulte forums.developer.apple.com/thread/126891
Vadim Motorine
19
Adicionar a estrutura à lista de ativos binários incorporados corrigiu isso. Aqui está como a configuração de um framework estrangeiro se parece na forma final na GUI do Xcode como um Embedded Framework (Xcode 9.2, pessoalmente, eu gosto mais de uma trilha visual de migalhas ;-)):
A Apple travou intencionalmente o tempo de execução para, de alguma forma, informar ao desenvolvedor sobre o problema de que você não pode usar estruturas não-Apple como estruturas simplesmente vinculadas no desenvolvimento do iOS? Seria melhor que aparecesse como um erro de compilação, eu acho ... com um botão que dizia "mova!"
O uso de binários incorporados evita que o usuário final tenha que adicionar o Framework independentemente de seu aplicativo (ou ter que fazer com um instalador). No caso do iPhone (iOS), isso é impossível, mas no macOS é possível, mas pode ficar bagunçado rápido.
Para o usuário final, é muito mais agradável simplesmente arrastar e soltar um aplicativo para instalá-lo no macOS, que é onde o embutido se torna um benefício. A incorporação também evita os clássicos "conflitos de DLL" de ter versões externas de sua estrutura para gerenciar. (espaço em disco é barato, o tempo do meu cliente é precioso).
Pequena atualização. O Xcode 10.1 agora permite que você arraste o framework personalizado da seção "Link Binary With Libraries", onde ele vai por padrão, para a seção "Copy Bundle Resources" onde deve estar ... Ele não copia mais apenas a referência mas também o move. Captura de tela aqui: stackoverflow.com/questions/24993752/…
Cerniuk
13
Corrigi o erro no meu projeto agora mesmo!
Se você estiver usando o framework swift no projeto Object-C, aconselho você a alterar as configurações de construção.
Sempre incorporar a opção Bibliotecas padrão Swift para SIM. como isso:
super homem, eu lutei com esse problema 1,5 dias. até mesmo encontrei esta bela matriz twitter.com/isupportmatrix alterando-a para obrigatório resolvido ao meu lado também
swift2geek
e também funcionou apenas com a configuração em Arquivo -> Configurações do projeto-> Sistema de compilação legado
swift2geek
11
Xcode 11.1 , Desligue Do not Embed, Embed & Signé uma boa opção.
2) Certifique-se de ter adicionado seus binários por meio da seção "Binários incorporados".
3) Certifique-se de ter habilitado a assinatura de estruturas na seção de fase de construção.
4) Certifique-se de que as estruturas incorporadas não sejam links simbólicos.
5) Você pode tornar as estruturas vinculadas opcionais em vez de obrigatórias na fase "Vincular binários com bibliotecas". Isso dirá ao iOS para não procurar por essas estruturas durante o lançamento. De qualquer forma, você precisa corrigir os erros para usar essas estruturas!
6) Verifique se todas as entradas de info.plist estão corretas. No meu caso, estava usando um arquivo info.plist do Mac para iOS. Ele estava procurando por algum arquivo xib que não estava presente no projeto iOS.
7) Faça uma limpeza e construa após qualquer alteração. Isso é necessário porque o xcode não copia / altera esses arquivos se eles já existirem.
8) Remova o aplicativo do iPad e instale-o. Mesma razão de 7.
Guard Malloc, estar correto. Alguém sabe por que ele corrige o travamento?
Mojo66 de
1
Você também pode tentar limpar o projeto e executar novamente ou apenas reiniciar o Xcode. Esses tipos de erros são irritantes e são como bugs no Xcode
Karanveer Singh
5
Para responder à pergunta original "O que posso fazer para ter mais informações sobre o problema?", Este tópico do fórum da Apple fornece uma dica muito simples: simplesmente execute o aplicativo travado fora do XCode (ou seja, pare-o do XCode e execute-o manualmente no seu dispositivo). Isso produzirá um log de travamento contendo mais detalhes sobre o que aconteceu. Você pode então revisar este log no menu da janela XCode / Dispositivos e Simuladores -> Exibir Logs do Dispositivo.
Eu enfrentei o mesmo problema com o Xcode 11.3 e o macOS Catalina 10.15.2. O aplicativo estava funcionando bem no dispositivo, mas não no simulador. Parece que há um problema com o Simulador e a solução alternativa é desativar o Thread Sanitizer.
Encontrei um erro com a mesma assinatura (meu projeto estava em Obj-C) e descobri que havia esquecido de vincular com a estrutura apropriada. A mensagem de erro no log de depuração que levou à localização do erro foi:
dyld: Símbolo não encontrado: _OBJC_CLASS _ $ _ SFSafariViewController
Para meu erro específico, adicionar SafariServices.framework em Targets -> Build Phases -> "Link Binary With Libraries" resolveu o problema. Embora você provavelmente não tenha o mesmo erro e resolução específicos, é útil verificar o log de depuração em busca de pistas.
Eu tive essa situação após atualizar o Xcode para v10.2.1 e swift para v5.0. Se você estiver usando carthage + RxSwift, o novo RxSwift usa RxRelay.framework. Você deve ir para o diretório / Carthage / Build, localizar essa estrutura e colocá-la em seu projeto. Não se esqueça também de adicioná-lo ao seu carthage copy-frameworksscript:
$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
Se você estiver usando uma estrutura escrita em Swift em um aplicativo Objective-C, você precisa incluir o conjunto de ferramentas Swift no aplicativo que consome a estrutura.
A maneira que descobri para fazer isso é criar um arquivo swift fictício no aplicativo para que o XCode reconheça o swift e o adicione ao projeto de maneira apropriada. Em seguida, você pode excluir o arquivo fictício.
Eu adoraria se alguém soubesse uma maneira melhor de adicionar explicitamente o swift a um projeto object-c sem adicionar um arquivo swift.
se você usar a estrutura de construção Carthage, depois de arrastar a estrutura para o seu projeto, você deve adicioná-la aos Binários Gerais / Incorporados.
Eu estava enfrentando o mesmo problema. Definir 'Always Embed Swift Standard Libraries' como Yes nas configurações de build do meu destino funcionou para mim.
Além disso, se você estiver usando estruturas personalizadas, certifique-se de definir o tipo Mach-O como biblioteca estática. Eu li em algum lugar que o IOS não permite dylib. De qualquer forma, isso funcionou para mim.
Para aumentar a longa lista de encontros com esse erro, ele ocorre quando estou no XCode12.2 Beta 2 implantando no meu Mac executando MacOS 10.15.5 com o destino de implantação definido como MacOS 11.0. Esta situação aconteceu porque eu estava testando o aplicativo Mac Catalyst Tutorial para adicionar uma barra lateral. Mudar o destino para MacOS 10.15.5 eliminou o erro e inicializou o aplicativo corretamente.
Corrigi meu erro em meu projeto.
1. Verifique outros tópicos quando o erro aconteceu. Descobri que meu erro é sobre a câmera.
Adicione a privacidade da câmera no arquivo Info.plist.
1) Abra o arquivo info.plist.
2) Adicione uma nova chave chamada "Privacidade - Descrição do uso da câmera" e insira uma string que descreva por que o aplicativo precisa da câmera. A descrição será exibida quando seu aplicativo precisar de privacidade.
Acabei de ter o mesmo problema e a razão foi devido ao fato de que revoguei meus certificados de desenvolvedor e criei novos com o Xcode 10, após uma nova atualização do macOS Mojave (para alguns, ele excluiu todas as credenciais de login e desatualizou alguns certificados de chaveiro).
Então, tudo que eu tive que fazer foi remover os aplicativos instalados do meu dispositivo e executá-los através do Xcode novamente, para que ele instale o novo Perfil de Provisionamento certo no meu dispositivo :)
Às vezes, isso acontece quando você usa estruturas de sistema que são acessíveis apenas a partir da versão iOS posterior à sua versão de destino. Pode ser corrigido marcando esta estrutura vinculada como opcional.
Por exemplo, um projeto direcionado ao iOS 11 e usando o recurso AuthenticationServices para iOS 12 AutoFill travará no iOS 11 da maneira descrita.
Na verdade, tive o problema com o 11.3.1 e o Thread Sanitizer já estava desligado conforme mencionado acima. No meu caso, o problema era que eu costumava ter diferentes versões de xCode na minha pasta de aplicativos como essa
Demoro 2 dias para entender que o sistema de compilação olha o /Applications/Xcode.app por padrão. Portanto, trazer 11.3.1 para o /Applications/Xcode.app finalmente resolve o problema
Para mim um simples
Clean
eRebuild
resolvido. Espero que ajude.fonte
Esse problema apareceu após a atualização do sistema para macOS 10.15.2 beta. Desativar "Thread Sanitizer" resolveu o problema (Xcode 11.2). Agora não consigo usar o Thread Sanitizer e tenho que esperar pela próxima atualização do sistema operacional.
fonte
Adicionar a estrutura à lista de ativos binários incorporados corrigiu isso. Aqui está como a configuração de um framework estrangeiro se parece na forma final na GUI do Xcode como um Embedded Framework (Xcode 9.2, pessoalmente, eu gosto mais de uma trilha visual de migalhas ;-)):
A Apple travou intencionalmente o tempo de execução para, de alguma forma, informar ao desenvolvedor sobre o problema de que você não pode usar estruturas não-Apple como estruturas simplesmente vinculadas no desenvolvimento do iOS? Seria melhor que aparecesse como um erro de compilação, eu acho ... com um botão que dizia "mova!"
O uso de binários incorporados evita que o usuário final tenha que adicionar o Framework independentemente de seu aplicativo (ou ter que fazer com um instalador). No caso do iPhone (iOS), isso é impossível, mas no macOS é possível, mas pode ficar bagunçado rápido.
Para o usuário final, é muito mais agradável simplesmente arrastar e soltar um aplicativo para instalá-lo no macOS, que é onde o embutido se torna um benefício. A incorporação também evita os clássicos "conflitos de DLL" de ter versões externas de sua estrutura para gerenciar. (espaço em disco é barato, o tempo do meu cliente é precioso).
fonte
Corrigi o erro no meu projeto agora mesmo!
Se você estiver usando o framework swift no projeto Object-C, aconselho você a alterar as configurações de construção.
Sempre incorporar a opção Bibliotecas padrão Swift para SIM. como isso:
espero que isso tenha sido útil para você.
fonte
Resolvido finalmente!
O que funcionou para mim foi tornar a estrutura "opcional" em vez de "obrigatória".
Espero que ajude!
fonte
Xcode 11.1 , Desligue
Do not Embed
,Embed & Sign
é uma boa opção.Obrigado @mkonovalov, @William Cerniuk
fonte
1) Continue a execução para ver se alguma mensagem aparece no depurador, como "MyFramework.framework" não encontrado. Se for esse o caso, siga esta discussão: Biblioteca do OS X Framework não carregada: 'Imagem não encontrada' Para mim, esta resposta funcionou: https://stackoverflow.com/a/44796734/4060763
2) Certifique-se de ter adicionado seus binários por meio da seção "Binários incorporados".
3) Certifique-se de ter habilitado a assinatura de estruturas na seção de fase de construção.
4) Certifique-se de que as estruturas incorporadas não sejam links simbólicos.
5) Você pode tornar as estruturas vinculadas opcionais em vez de obrigatórias na fase "Vincular binários com bibliotecas". Isso dirá ao iOS para não procurar por essas estruturas durante o lançamento. De qualquer forma, você precisa corrigir os erros para usar essas estruturas!
6) Verifique se todas as entradas de info.plist estão corretas. No meu caso, estava usando um arquivo info.plist do Mac para iOS. Ele estava procurando por algum arquivo xib que não estava presente no projeto iOS.
7) Faça uma limpeza e construa após qualquer alteração. Isso é necessário porque o xcode não copia / altera esses arquivos se eles já existirem.
8) Remova o aplicativo do iPad e instale-o. Mesma razão de 7.
fonte
Desmarcar "Guard Malloc" no diagnóstico funcionou para mim.
fonte
Guard Malloc
, estar correto. Alguém sabe por que ele corrige o travamento?Para responder à pergunta original "O que posso fazer para ter mais informações sobre o problema?", Este tópico do fórum da Apple fornece uma dica muito simples: simplesmente execute o aplicativo travado fora do XCode (ou seja, pare-o do XCode e execute-o manualmente no seu dispositivo). Isso produzirá um log de travamento contendo mais detalhes sobre o que aconteceu. Você pode então revisar este log no menu da janela XCode / Dispositivos e Simuladores -> Exibir Logs do Dispositivo.
fonte
Eu tinha acabado de aplicar a "Privacidade - Descrição do uso da câmera" no info.plist.
Não sei se esta informação ajuda mais alguém ...
fonte
Eu enfrentei o mesmo problema com o Xcode 11.3 e o macOS Catalina 10.15.2. O aplicativo estava funcionando bem no dispositivo, mas não no simulador. Parece que há um problema com o Simulador e a solução alternativa é desativar o Thread Sanitizer.
Consulte: https://forums.developer.apple.com/message/397978#397978
Espero que isto ajude.
fonte
Encontrei um erro com a mesma assinatura (meu projeto estava em Obj-C) e descobri que havia esquecido de vincular com a estrutura apropriada. A mensagem de erro no log de depuração que levou à localização do erro foi:
dyld: Símbolo não encontrado: _OBJC_CLASS _ $ _ SFSafariViewController
Para meu erro específico, adicionar SafariServices.framework em Targets -> Build Phases -> "Link Binary With Libraries" resolveu o problema. Embora você provavelmente não tenha o mesmo erro e resolução específicos, é útil verificar o log de depuração em busca de pistas.
fonte
Eu tive essa situação após atualizar o Xcode para v10.2.1 e swift para v5.0. Se você estiver usando carthage + RxSwift, o novo RxSwift usa
RxRelay.framework
. Você deve ir para o diretório / Carthage / Build, localizar essa estrutura e colocá-la em seu projeto. Não se esqueça também de adicioná-lo ao seucarthage copy-frameworks
script:$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
Resolvido graças a: https://stackoverflow.com/a/52550148/2493555
fonte
Se você estiver usando uma estrutura escrita em Swift em um aplicativo Objective-C, você precisa incluir o conjunto de ferramentas Swift no aplicativo que consome a estrutura.
A maneira que descobri para fazer isso é criar um arquivo swift fictício no aplicativo para que o XCode reconheça o swift e o adicione ao projeto de maneira apropriada. Em seguida, você pode excluir o arquivo fictício.
Eu adoraria se alguém soubesse uma maneira melhor de adicionar explicitamente o swift a um projeto object-c sem adicionar um arquivo swift.
fonte
se você usar a estrutura de construção Carthage, depois de arrastar a estrutura para o seu projeto, você deve adicioná-la aos Binários Gerais / Incorporados.
fonte
Eu encontro a maneira certa de resolver isso.
Certifique-se de
AppleWWDRCA.cer
definir o modo padrão do sistema, então ele funcionará:fonte
Eu estava enfrentando o mesmo problema. Definir 'Always Embed Swift Standard Libraries' como Yes nas configurações de build do meu destino funcionou para mim.
fonte
Tive um problema semelhante que foi resolvido pela falta de especificação de permissão no plist (por mais estranho que seja ..)
Eu tentei usar AVCaptureDevice e ele travou na inicialização (meu aplicativo era mínimo)
Adicionando -
Privacy - Camera Usage Description
parainfo.plist
resolver isso para mim.fonte
Além disso, se você estiver usando estruturas personalizadas, certifique-se de definir o tipo Mach-O como biblioteca estática. Eu li em algum lugar que o IOS não permite dylib. De qualquer forma, isso funcionou para mim.
fonte
Para aumentar a longa lista de encontros com esse erro, ele ocorre quando estou no XCode12.2 Beta 2 implantando no meu Mac executando MacOS 10.15.5 com o destino de implantação definido como MacOS 11.0. Esta situação aconteceu porque eu estava testando o aplicativo Mac Catalyst Tutorial para adicionar uma barra lateral. Mudar o destino para MacOS 10.15.5 eliminou o erro e inicializou o aplicativo corretamente.
fonte
Corrigi meu erro em meu projeto.
1. Verifique outros tópicos quando o erro aconteceu. Descobri que meu erro é sobre a câmera.
1) Abra o arquivo info.plist.
2) Adicione uma nova chave chamada "Privacidade - Descrição do uso da câmera" e insira uma string que descreva por que o aplicativo precisa da câmera. A descrição será exibida quando seu aplicativo precisar de privacidade.
fonte
Acabei de ter o mesmo problema e a razão foi devido ao fato de que revoguei meus certificados de desenvolvedor e criei novos com o Xcode 10, após uma nova atualização do macOS Mojave (para alguns, ele excluiu todas as credenciais de login e desatualizou alguns certificados de chaveiro).
Então, tudo que eu tive que fazer foi remover os aplicativos instalados do meu dispositivo e executá-los através do Xcode novamente, para que ele instale o novo Perfil de Provisionamento certo no meu dispositivo :)
fonte
Às vezes, isso acontece quando você usa estruturas de sistema que são acessíveis apenas a partir da versão iOS posterior à sua versão de destino. Pode ser corrigido marcando esta estrutura vinculada como opcional.
Por exemplo, um projeto direcionado ao iOS 11 e usando o recurso AuthenticationServices para iOS 12 AutoFill travará no iOS 11 da maneira descrita.
fonte
Na verdade, tive o problema com o 11.3.1 e o Thread Sanitizer já estava desligado conforme mencionado acima. No meu caso, o problema era que eu costumava ter diferentes versões de xCode na minha pasta de aplicativos como essa
/Applications/xcode11.3.1/Xcode.app /Applications/xcode11.3/Xcode.app /Applications/xcode10.1/Xcode.app
e
/Applications/Xcode.app - was 11.2
Demoro 2 dias para entender que o sistema de compilação olha o /Applications/Xcode.app por padrão. Portanto, trazer 11.3.1 para o /Applications/Xcode.app finalmente resolve o problema
fonte
O mesmo problema aconteceu comigo. Eu estava usando o iOS 14 Beta e o problema foi corrigido quando atualizei para a versão oficial.
fonte
Tive esse problema apenas ao executar em um dispositivo real (iPhone SE). No projeto do simulador funcionou conforme o esperado.
Eu tentei todas as correções deste tópico e daqui: Biblioteca do OS X Framework não carregada: 'Imagem não encontrada' Nenhum desses funcionou para mim.
Para mim, o problema foi resolvido após reiniciar o iPhone (sic!).
Eu fiz:
E finalmente funciona. :)
Se todas as outras soluções falharem, não se esqueça de experimentar.
fonte
Classifiquei pelo comando "pod install".
fonte