Quando eu inicio meu aplicativo com o XCode, eu tenho um travamento, mas nenhum erro
O aplicativo está parando neste tópico
O que posso fazer para ter mais informações sobre o assunto?
Respostas:
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.
Para mim um simples Clean
e Rebuild
resolvido. Espero que ajude.
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).
Resolvido finalmente!
O que funcionou para mim foi tornar a estrutura "opcional" em vez de "obrigatória".
Espero que ajude!
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.
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.
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.
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-frameworks
script:
$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
Resolvido graças a: https://stackoverflow.com/a/52550148/2493555
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 encontro a maneira certa de resolver isso.
Certifique-se de AppleWWDRCA.cer
definir o modo padrão do sistema, então ele funcionará:
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.
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
para info.plist
resolver isso 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.
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
/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
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.
Classifiquei pelo comando "pod install".