Erro "biblioteca não encontrada para" depois de colocar o aplicativo na AdMob

150

Estou recebendo um erro depois de colocar meu aplicativo em uma AdMob. O aplicativo estava funcionando até hoje. O erro é o seguinte:

ld: library not found for -lGoogleAdMobAds
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Como posso consertar isso? Obrigado.

ViniciusPV
fonte
Às vezes: desconecte seu dispositivo e primeiro crie o projeto. Ele irá gerar bibliotecas e, em seguida, você poderá executar no dispositivo.
TheTiger

Respostas:

114

Às vezes, você apenas remove a referência da biblioteca e adiciona a referência novamente.

Além de adicionar o SDK dos anúncios para celular do Google e outras bibliotecas novamente, recomendo que você verifique os caminhos de pesquisa da biblioteca . Há casos em que você copia ou duplica um destino, o Xcode decide que ele precisa escapar de aspas duplas "com um '\'. Certifique-se de remover todos os \ 's - deve ficar assim -

insira a descrição da imagem aqui

Consegui duplicar o erro, prefixando meu caminho com vários '\'.

raurora
fonte
boa, após a instalação do pod, uma das bibliotecas não estava listada lá. Não sei por que, mas adicionar esse caminho da biblioteca faz com que funcione.
Warewolf
Bem, isso corrigiu meu problema "Biblioteca não encontrada para -lART" e é realmente inacreditável! Obrigado !
ZedTuX 13/05/19
Considere "Caminhos de pesquisa de cabeçalho" também.
Luat Vu Dinh
@raurora Como você acessa os caminhos de pesquisa da biblioteca?
Massimo Frittelli
1
@MassimoFrittelli Project> guias Configurações de compilação> Caminhos de pesquisa. Você também pode digitar na opção de pesquisa.
raurora 16/06
315

Eu tive um problema semelhante de "biblioteca não encontrada". No entanto, foi porque acidentalmente eu estava usando o .xcodeprojarquivo em vez do .xcworkspacearquivo.

Casper
fonte
4
Alguém pode explicar a finalidade do .xcodeproj e do .xcworkspace?
EFreak
11
Coisas como esta me faz amar o ecossistema Javascript
Mark
Como eu posso mudar isso ..?
Brayan Loayza
8
xcworkspace é quando você usa Cocoapods. Não é problema do Xcode, mas dos usuários.
Azam
1
.xcworkspace é quando você possui mais de 1 "projeto" em sua solução. Por exemplo, você pode ter bibliotecas externas (cocoapods) ou sua própria biblioteca que você usa em muitos projetos.
Daniel Benedykt
86

Escolha o seu destino, vá para "Build Phases"a "Link Binary With Libraries"remoção ".a"de arquivos dessa biblioteca. Limpe e construa.

Abuzar Amin
fonte
3
Sim, o suficiente estranho que Xcode não marcá-lo faltando colorindo de vermelho
brainray
Muito bom !! meu problema foi quando adicionei a estrutura do usuário ao projeto antigo. Remova o coreplot.a e funciona bem !!!!
José Pose S
66

Se erro relacionado ao Cocoapods da seguinte maneira:

library not found for -lPod-...

Você precisa verificar outros sinalizadores de vinculador e removê-lo de lá.

Informações adicionais: se você tem um projeto antigo que usa cocoapods. E recentemente você precisou adicionar o use_frameworks! ao seu podfile. cocoapods não adicionará mais as bibliotecas aos outros sinalizadores de vinculador, pois eles serão herdados. Portanto, pode ser necessário remover manualmente os outros sinalizadores do vinculador que foram adicionados antes de usar o use_frameworks!

hasan
fonte
1
Eu tenho muitas bandeiras aqui, devo remover todas ou apenas uma para o Pod?
Mayur Deshmukh
Se esses sinalizadores causarem um problema. você deve removê-los ou mantê-los e adicionar a biblioteca, se ainda quiser usá-lo.
Hasan
1
Eu acho que isso acontece quando você tenta remover a biblioteca que é adicionada manualmente por vagens de cacau. A maneira correta é remover a biblioteca do seu podfile. então você executa o pod install novamente
hasan
1
Obrigado!! Esta foi uma pista para mim :). No meu caso, o destino duplicado dividiu cada -l "framework" em duas linhas "-l" e "framework" !!
Eva Madrazo
1
@IanSteffy apenas combiná-lo
Eva Madrazo
57

Para o meu caso, o Xcode 7 , também funcionou no Xcode 9.1

ld: library not found for -ldAfnetworking
clang: error: linker command failed with exit code 1 (use -v to see invocation)

definido Build Active architecture OnlycomoYes

insira a descrição da imagem aqui

Ted
fonte
2
E quando precisamos criar uma compilação de produção para a App Store? Quero dizer, deve ser NÃO para o Build de produção.
Jabbar 27/07
concordam que deve haver para a produção
Ted
2
Isso NÃO afeta a instalação de criação de produção?
Jabbar 27/07
1
Trabalhou para mim enquanto integrava o Pinterest SDK no XCode 9.2 e iOS 11.
Aakash Aggarwal
21

Isso acontece se você estiver usando cocoapods, use o .xcworkspacearquivo em vez do .xcodeprojarquivo padrão .

ehacinom
fonte
15

Se o erro é como seguir

ld: biblioteca não encontrada para -lpods

Eu descobri que um arquivo "libPods.a" que está na cor vermelha (como arquivos ausentes) foi criado de alguma forma no grupo Framework do projeto. Acabei de remover esse arquivo e tudo ficou bem.

EDIT: Outra solução

Outra solução que eu já respondi na pergunta semelhante está neste link

Teena nath Paul
fonte
12

vá para Criar fases -> Vincular binário com bibliotecas e remover a biblioteca que mostra erros porque essa biblioteca não está disponível na pasta do projeto

Hitesh Agarwal
fonte
Isso corrigiu meu problema específico. Eu tinha duas bibliotecas nomeadas semelhantes, uma nomeada libPods-Foo BarTests.ae outra nomeada libPods-FooBarTests.a.
Edenwaith 16/0318
9

Isso também pode acontecer se você abrir o arquivo do projeto em vez de um espaço de trabalho. Eu desperdicei como um dia desse jeito.

kkodev
fonte
1
excelente, eu também fiz atualização pod ao fechar o espaço de trabalho, em seguida, abriu-a após a atualização pod terminado
Badr
5

Atrasado para a resposta, mas aqui está a lista de coisas que tentei. Portanto, ele estará em um só lugar se alguém quiser tentar corrigir o problema.

  1. Arquitetura válida = armv7 armv7s
  2. Construir apenas arquitetura ativa = NÃO
  3. Alvo -> Configurações de compilação -> Outros sinalizadores de vinculador = $ (herdado)
  4. Destino -> Configurações da compilação -> Caminho de pesquisa da biblioteca = $ (herdado)
  5. Limpeza do produto
  6. Atualização do pod no terminal
reetu
fonte
2

No meu caso, houve um problema de nomeação. Minha biblioteca foi chamada ios-admob-mm-adapter.a, mas o Xcode esperava, que o nome iniciasse com o prefixo lib . Acabei de renomear minha lib paralibios-admob-mm-adapter.a e corrigi o problema.

Eu uso Cocoapods e vincula bibliotecas a outros sinalizadores de vinculador opção nas configurações de compilação do meu destino. A bandeira parece-l"ios-admob-mm-adapter"

Espero que isso ajude mais alguém

Accid Bright
fonte
2

Simplesmente, GoogleAdMobAds.aestá faltando no destino do projeto. Para mim foi libAdIdAccessLibrary.aVerifique a captura de tela em anexo

insira a descrição da imagem aqui

Ashvin Ajadiya
fonte
2

Quanto a mim, esse problema ocorre porque eu instalei a Biblioteca de materiais para IOS. para resolver esse problema

1: Vá para Criar configurações do seu aplicativo de destino.

2: Procure por outros sinalizadores de vinculador

3: Abra os outros sinalizadores do vinculador e verifique a biblioteca mencionada no erro.

4: remova esse sinalizador.

5: Limpe e construa.

Espero que isso resolva seu problema.

Fahad Qasim
fonte
2

No caso de ter ld: library not found for -{LIBRARY_NAME}acontecido porque o (s) arquivo (s) da biblioteca não existe.

Verifique o caminho da biblioteca na guia "Construir fases" dos destinos de pesquisa da biblioteca.

O caminho dos arquivos da biblioteca deve estar de acordo com o caminho real, por exemplo, se os arquivos na raiz do projeto, você deve definir o caminho como $(PROJECT_DIR)

Reza Dehnavi
fonte
1

Sei que isso é um pouco antigo, mas acabei de encontrar um problema semelhante e a execução de 'pod update' corrigiu isso para mim. Meu erro de biblioteca foi com o AFNetworking ...

Apenas tome cuidado ao atualizar o pod se você não usar versões explícitas no seu arquivo pod.

Trevor Panhorst
fonte
1

Este erro é muito estranho.

Eu tive esse erro com -ldAfnetworking e só copio meu projeto em outro caminho e funciona.

A. Trejo
fonte
1

Tentei renomear minha configuração de compilação Releasepara Production, mas aparentemente os vagens de cacau não gostam disso. Renomeei o nome novamente para Release, e tudo se compõe perfeitamente.

Aymeric Bouzy aybbyk
fonte
você também pode renomear o destino no podfile.
Romain TAILLANDIER
1

A resposta de @ raurora me apontou na direção certa. Eu estava incluindo bibliotecas no meu caminho "watchkitapp Extension / lib". Nesse caso, o caminho de pesquisa da biblioteca precisava ser escapado com um '\', mas o vinculador parecia não entender isso. Para corrigir / contornar o problema, movi meu caminho da lib para um nível acima, para que ele não estivesse mais em um diretório que continha um espaço no nome.

Justin Domnitz
fonte
1

Acabei de atualizar o arquivo pod 'pod update' e ele começou a funcionar normalmente para mim.

Chandni
fonte
1

A execução de 'atualização do pod' no meu projeto corrigiu meu problema com o erro 'biblioteca não encontrada para -lSTPopup'.

Observando a resposta de Trevor Panhorst:

"Apenas tome cuidado ao atualizar o pod se você não usar versões explícitas no seu arquivo pod."

Juan Santos
fonte
1

Solução fácil. Aqui está como eu solucionaria o problema:

  1. Vá para o diretório platforms/ios
  2. Em seguida, execute o comando pod install

É isso aí. Isso deve instalar a biblioteca ausente.

Manoj Shrestha
fonte
1
  1. Pasta de compilação limpa
  2. XCode reiniciado

Se afastou...

batthis
fonte
1

É um erro de tempo de compilação para um Static Librarycausado porStatic Linker

ld: library not found for -l<Library_name>
  1. Você pode obter o erro Library not found forquando não tiver incluído um caminho de biblioteca para o diretórioLibrary Search Paths

    ldsignifica Static Linkerque não é possível encontrar um local da biblioteca. Como desenvolvedor, você deve ajudar o vinculador e apontar oLibrary Search Paths

    Build Settings -> Search Paths -> Library Search Paths 
  2. Além disso, você pode obter esse erro se abrir pela primeira vez um novo projeto ( .xcodeproj) com suporte do Cocoapods, execute pod update. Para corrigi-lo, feche este projeto e abra um espaço de trabalho criado ( .xcworkspace)

yoAlex5
fonte
0

Eu estava recebendo erros semelhantes na biblioteca não encontrada. Por fim, foi assim que consegui resolvê-lo

  1. Antes de iniciar com o Xcode Archive, usei o flutter build iOS
  2. Alterou o destino de implantação do IOS para um iOS 11.2 de destino mais alto. Anteriormente, eu tinha algo como 8.0, que estava dando todos os erros acima.
  3. Certifique-se de que os destinos de implantação do IOS no Xcode sejam os mesmos nos projetos, destinos e pods
dnscode
fonte