Estou tentando criar um OS X Framework básico, agora apenas criei um framework de teste: TestMacFramework.framework
e estou tentando importá-lo para um novo projeto de aplicativo OS X.
Criei o arquivo .framework e o importei para o novo projeto. A estrutura parece vincular bem e posso referenciar o arquivo de cabeçalho público que adicionei à seção de fases da construção da estrutura.
No entanto, quando tento executar o aplicativo Container, recebo o seguinte erro:
dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
Reason: image not found
Depois de pesquisar um pouco, percebi que precisava adicionar uma Copy Files
seção às fases de criação do meu aplicativo de contêiner, então fiz isso e o configurei da seguinte maneira ...
No entanto, ainda estou recebendo o erro de tempo de execução. Obviamente, estou fazendo algo errado aqui, mas o recurso da biblioteca de desenvolvedores da Apple para essa referência ao Xcode 2, portanto, não ajuda muito!
O que eu perdi?
ATUALIZAR:
Posso ver no log de compilação que o meu TestMacFramework.framework
está sendo copiado para o diretório .app contents / frameworks, mas não está sendo instalado no diretório Library / Frameworks no HD
ATUALIZAÇÃO 2:
A construção é vinculada corretamente se eu copiar manualmente TestMacFramework.framework
para o Library/Frameworks
diretório
fonte
otool -L
você diz sobre onde o aplicativo espera encontrar a estrutura?/Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework (compatibility version 1.0.0, current version 1.0.0)
Respostas:
[Xcode 11+]
A única coisa a fazer é adicionar a estrutura à
General->Frameworks, Libraries And Embedded Content
seção naGeneral
guia do destino do seu aplicativo.Certifique-se de selecionar a opção 'Incorporar e assinar'.
[Xcode v6 -> Xcode v10]
A única coisa a fazer é adicionar a estrutura à
Embedded binaries
seção naGeneral
guia do destino do seu aplicativo.fonte
Embedded binaries
seção no meu projeto macOS. O que há de errado?Então eu consegui fazê-lo funcionar, é bem simples quando você tem as instruções corretas. O que eu procurava era uma estrutura 'privada' que mora no pacote de aplicativos em vez de ser gravada na pasta da biblioteca do sistema.
Construindo a estrutura
Incluindo o quadro
fonte
Foi bem simples para mim, acabei de adicionar minha estrutura aos meus binários incorporados sob destinos de aplicativos
fonte
As opções acima, onde não é possível incluir. Eu o resolvi especificando o caminho de pesquisa do caminho de execução
Isso está na guia ' Configurações da compilação '. Na seção " Vinculação ". Altere ' Caminhos de pesquisa de caminho de execução ' em
$(inherited) @executable_path/Frameworks
fonte
Encontrei o mesmo problema, mas a solução aceita não funcionou para mim. Em vez disso, a solução foi modificar o nome de instalação da estrutura.
O erro na postagem original é:
Observe o primeiro caminho depois que a Biblioteca não foi carregada . A estrutura está sendo carregada de um caminho absoluto. Esse caminho vem do nome de instalação da estrutura (às vezes chamado de rpath), que pode ser examinado usando:
Quando uma estrutura é incorporada a um aplicativo, esse caminho deve ser relativo e desta forma: @ rpath / MyFramework.framework / MyFramework . Se o nome de instalação da estrutura for um caminho absoluto, ele poderá não ser carregado no tempo de execução e um erro semelhante ao descrito acima será produzido.
A solução é modificar o nome da instalação:
Com essa alteração, não recebo mais o erro
fonte
A exclusão de dados derivados salvou para mim
fonte
pod install
, funcionou.Nenhum desses problemas resolveu isso para mim. O problema no final foi bem fácil. Parece que é um bug do Xcode bastante importante, que registrei o problema e corrigi sob o bug da Apple: 29820370. Se você está tendo problemas (como parece haver várias páginas de problemas semelhantes a esse), seria ótimo se você pudesse crie um bug no bug reporter: https://bugreport.apple.com/ e faça referência ao bug que criei para ganhar visibilidade. Quero transformar o Xcode de volta no prazer que era antes - e isso é algo que tenho certeza de que o Xcode deveria ter se consertado.
Aqui está a solução: 1. Abra o chaveiro - vá para Apple Worldwide Developer Cert. 2. Clique duas vezes nele 3. Altere o nível de permissão de "sempre confie" para usar os Padrões do Sistema 4. Salve e feche-o 5. Reinicie o Xcode, Limpe e construa seu projeto e ele deve ter desaparecido.
Captura de tela abaixo das configurações corretas: Espero que isso ajude!
fonte
no Xcode 11, adicione estrutura ao
General->Frameworks, Libraries And Embedded Content
depois de adicionar, selecione a
Embed & Sign
opçãofonte
Quando você arrasta uma estrutura personalizada para um projeto no Xcode 10.1 , ela assume que a estrutura é uma estrutura do sistema e coloca a estrutura na seção "Vincular binário com bibliotecas" da seção "Construir fases" sob o seu destino.
As estruturas do sistema já estão no dispositivo e, portanto, não são copiadas para o dispositivo e, portanto, não podem ser executadas em tempo de execução, portanto o KABOOM (falha em __abort_with_payload e erro desinformador: "Motivo: imagem não encontrada"). Isso ocorre porque o código da estrutura não é copiado para o dispositivo ...
Na realidade, para que o Xcode vincule a estrutura personalizada e garanta que ela seja copiada junto com o seu código para o dispositivo iOS (real ou simulador), a estrutura personalizada precisa ser movida para "Copiar recursos do pacote". Em última análise, empacota a estrutura, juntamente com o código executável, para estar disponível no dispositivo juntos.
Para adicionar uma estrutura personalizada a um projeto e evitar a falha da Apple:
A estrutura personalizada é copiada juntamente com o seu código para o dispositivo de destino e está disponível em tempo de execução.
[editorial: você pensaria que o Xcode seria inteligente o suficiente para descobrir a diferença entre uma de suas estruturas de sistema que não precisam ser copiadas para o dispositivo e uma estrutura personalizada que esteja, oh eu não sei, na hierarquia de diretórios raiz do projeto ... 🙄]
fonte
Deve haver um 'Executar Script' em 'Fases de Construção' com este: '/ usr / local / bin / carthage copy-frameworks'
Nos 'Arquivos de entrada' desse 'Executar script', você deve adicionar o caminho às suas bibliotecas. Como isso:
fonte
Se você acidentalmente redefinir seu chaveiro, isso poderá ocorrer devido à falta de certificados da Apple no chaveiro. Eu segui isso para resolver o meu problema.
Eu tive o mesmo problema e consegui corrigir o download novamente do WWDR (Autoridade Certificadora de Relações com Desenvolvedores da Apple). Faça o download aqui: http://developer.apple.com/certificationauthority/AppleWWDRCA.cer
fonte
Se você estiver usando o Xcode 11 , verifique se você adicionou a estrutura em Frameworks, Libraries e Incorpored Content em Target settings - General. Alterar o status de incorporação de - 'Não incorporar' para 'Incorporar e assinar'
fonte
O que resolveu para mim foi mudando
abstract_target
paratarget
para o alvo principal na minha Podfile. Eu o havia definido anteriormenteabstract_target
e isso causou o erro descrito. Agora isso trabalha como charmefonte
Para o Xcode 8, alguns produtos obsoletos serão removidos da pasta de dados derivados, consulte esta solução .
Apple: no macOS 10.12 e posterior, o Xcode limpa dados derivados antigos, cabeçalhos pré-compilados e caches de módulos. (23282174)
O sistema de construção do Xcode suporta a remoção de arquivos antigos de alguns tipos de artefatos de construção que foram produzidos em uma construção anterior, mas que foram removidos do projeto.
Com base no pensamento do autor, encontrei esse log de compilação no meu caso.
Após criar uma nova fase do arquivo de cópia e copiar a estrutura obsoleta de destino para o destino do Frameworks , o log de remoção acima desaparece após a reconstrução.
Apenas esclareça minha situação e razão, espero que seja útil para alguém.
fonte
Para mim, essa foi a solução, depois de muitas horas de pesquisa !!
Por alguma razão, no desenvolvimento de uma estrutura personalizada do Swift 2.3, o Xcode 8 havia removido a
DYLIB_INSTALL_NAME_BASE
configuração doproject.pbxproj
arquivo. Uma pequena caminhada noBuild Settings / Dynamic Library Install Name Base
cenário de volta para@rpath
consertá-lo.(em https://forums.developer.apple.com/thread/4687 )
fonte
Eu descobri que esse problema estava relacionado apenas à assinatura do código e aos certificados, e não ao próprio código. Para verificar isso, crie o aplicativo básico de exibição única e tente executá-lo sem nenhuma alteração no seu dispositivo. Se você vir o mesmo tipo de erro, isso mostra que seu código está correto. Como eu, você descobrirá que seus certificados são inválidos. Baixe tudo de novo e corrija os vencidos. Então, quando o aplicativo básico não reportar o erro, tente o aplicativo novamente depois de sair do Xcode e talvez reiniciar o seu Mac por uma boa medida. Que finalmente acabou com esse pesadelo. Provavelmente, isso não tem nada a ver com o seu código, especialmente se você receber a mensagem Build Successful ao tentar executá-lo. Para sua informação
fonte
O problema ocorreu ao testar o Xcode 9 beta e voltar ao Xcode 8. Uma simples limpeza no destino resolveu o problema.
fonte
Eu tive o mesmo problema por um motivo diferente. Eu criei uma nova configuração para Depurar e Liberar (em PROJETO -> guia Informações -> Configuração). E tive que alterar meu script de shell de estruturas de pod (Pods- "appName" -frameworks.sh, em Arquivos de suporte de destinos) para fazê-lo funcionar.
[Xcode 9]
fonte
A única coisa que funcionou para mim:
Alvo> Fases de construção> [CP] Embutir estruturas de pods Desmarque "Mostrar variáveis de ambiente no log de construção" e "Executar script apenas ao instalar"
fonte
Tentei várias correções, mas o que funcionou para mim foi excluir um destino ausente listado na guia de compilação do esquema de compilação. Você pode acessá-lo abrindo a janela de edição do esquema atual.
Edit: Meu destino de teste de interface do usuário não estava funcionando tão bem, e a solução que encontrei foi excluí-lo e gerá-lo novamente.
fonte
abra xcode -> geral -> Binários incorporados -> adicione QBImagepicker.framework e RSKImageCropper -> projeto limpo
basta adicionar QBImagePicker.framework e RSKImageCropper.framework nos binários incorporados que funcionaram para mim
fonte
Eu acho que não há uma maneira fixa de resolver esse problema, pois pode ser causado por uma razão diferente. Eu também tive esse problema na semana passada, não sei quando e exatamente o que causa esse problema, somente quando o executo no simulador com o Xcode ou tento instalá-lo no telefone, ele relata esse tipo de erro, mas quando eu executá-lo com react-nativo run-ios com terminal, não há problema.
Eu verifiquei todas as formas postadas na internet, como renovar certificado, alterar configurações no Xcode (todas as formas mencionadas acima), na verdade todas as configurações no Xcode já foram definidas conforme solicitado antes, nenhuma das formas funciona para mim. Até esta manhã, quando eu excluo os pods e reinstalei, o erro finalmente desapareceu após uma semana. Se você também estiver usando cocoapod e o erro aparecer apenas sem motivo específico, talvez você possa tentar o meu caminho.
fonte
Eu só tive esse problema ao executar no dispositivo real (iPhone SE). No projeto do simulador, funcionou como esperado.
Eu tentei todas as correções deste tópico e daqui . Nenhum deles funcionou para mim.
Para mim, o problema foi resolvido depois de reiniciar o iPhone (sic!).
Eu fiz:
E finalmente funciona. :)
Se todas as outras soluções falharem, não se esqueça de experimentá-lo.
fonte
Xcode 11: Criar fases -> Incorporar estruturas
fonte