React-native-onesignal: React-native 0,60 -lPods-OneSignalNotificationExtension não encontrado

Criado em 2 set. 2019  ·  20Comentários  ·  Fonte: OneSignal/react-native-onesignal

Descrição:

Eu atualizei para React-native 0.60 e segui as etapas de instalação de um sinal conforme mostrado aqui: https://documentation.onesignal.com/docs/react-native-sdk-setup

Quando eu executo o aplicativo xcode, recebo um erro relacionado ao OnesignalNotificationExtension.
Erro : ld: library not found for -lPods-OneSignalNotificationServiceExtension

O destino OneSignalNotificationServiceExtension tem as seguintes configurações:

  • Caminhos de pesquisa de cabeçalho: "${PODS_ROOT}/Headers/Public/react-native-onesignal"
  • Caminhos de pesquisa de estrutura: "${PODS_ROOT}/OneSignal/iOS_SDK/OneSignalSDK/Framework"

Meio Ambiente

  • versão react-native-oneignal: 3.3.2
  • reagente nativo: 0,60,5

Etapas para reproduzir o problema:

  1. Seguiu a configuração do RN: https://documentation.onesignal.com/docs/react-native-sdk-setup
  2. Executar projeto xcode
  3. Espere ver: ld: library not found for -lPods-OneSignalNotificationServiceExtension
Help Wanted

Comentários muito úteis

Tive o mesmo problema ao atualizar a versão RN para 0.63.2 e tentar arquivar o aplicativo e fui corrigido
por este.

Era uma incompatibilidade de versão entre a versão que eu especifiquei no Podfile e a versão de destino que
Eu configurei para a extensão OneSignal. Assim que modifiquei esses dois valores para corresponderem um ao outro,
o problema foi embora.

Podfile
image

OneSignalNotificationExtension (ou qualquer outro nome que você tenha nomeado para a extensão de notificação)
image

Todos 20 comentários

Olá,
Lançamos uma nova versão ontem. Você pode atualizar e tentar novamente? Tente também limpar a pasta DerivedData localizada em / Users // Library / Developer / Xcode / DerivedData

A última coisa a tentar é atualizar o pod de seu diretório ios

@jamesone você resolveu esse problema? A resposta de @rgomezp não ajuda.

@rgomezp nenhuma das sugestões acima funcionou, usando a última versão 3.4.1. Pode ser necessário um pouco de atenção sobre este assunto. Forçado a remover OneSignalNotificationExtension até ser resolvido, fico feliz em tentar outras sugestões / lançamentos.

+1 seguindo!

Olá,
Por favor, tente executar pod deintegrate && pod install do diretório ios em seu projeto

As sugestões acima não estão funcionando. Já atualizado para a versão mais recente v3.4.1, limpar dados derivados, limpar pods e reinstalar, mas ainda obtendo erro:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_RCTOneSignalExtensionService", referenced from:
      objc-class-ref in NotificationService.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Podfile.lock

  - react-native-onesignal (3.4.1):
    - OneSignal (= 2.11.0)
    - React (< 1.0.0, >= 0.13.0)

ATUALIZAR:
Foi mal. Acontece que preciso substituir o conteúdo de NotificationService.m pelo código mais recente no DOC. Eu ainda estava usando RCTOneSignalExtensionService.h . Após a atualização, o erro desapareceu.

Que bom ouvir! Comente se você ainda está lutando com esse problema e eu posso reabrir

Ainda está em questão no RN: 0.60.10 com pod.
como usar pod com isso?

Oi,
Eu tenho o mesmo problema ld: library not found for -lPods-OneSignalNotificationServiceExtension
Estou usando o reagente nativo 0,61.4 e o sinal único 3.6.1

com pod desintegrar e limpar e DerivedData

Encontrei, mas não sei por que, quando não tenho uma configuração "Release" na minha lista de configurações, o "arquivo" falha com biblioteca não encontrada.

falha no arquivo:
Capture d’écran 2020-01-08 à 17 07 06

arquivo com sucesso 👍
Capture d’écran 2020-01-08 à 17 16 44

Para sua informação, Dev, Preprod & Prod são baseados em Release. Estava funcionando sem "Release" em meus projetos mais antigos com o oneignal

Atualize @rgomezp :

  • Crie um novo projeto reac-nativo
  • Adicionar um sinal
  • construir e arquivar> está tudo bem
  • Renomear a configuração "Release" com outro nome (como Dev)
  • construir e arquivar> ld: biblioteca não encontrada para -lPods-OneSignalNotificationServiceExtension

As sugestões acima não estão funcionando. Já atualizado para a versão mais recente v3.4.1, limpar dados derivados, limpar pods e reinstalar, mas ainda obtendo erro:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_RCTOneSignalExtensionService", referenced from:
      objc-class-ref in NotificationService.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Podfile.lock

  - react-native-onesignal (3.4.1):
    - OneSignal (= 2.11.0)
    - React (< 1.0.0, >= 0.13.0)

ATUALIZAR:
Foi mal. Acontece que preciso substituir o conteúdo de NotificationService.m pelo código mais recente no DOC. Eu ainda estava usando RCTOneSignalExtensionService.h . Após a atualização, o erro desapareceu.

Isso não está funcionando para mim

  • um sinal (3.6.2)
  • reagente nativo (0,60,0)

Tendo o mesmo problema agora. -lPods-OneSignalNotificationServiceExtension falhou quando adicionei novos esquemas. Alguma atualização sobre isso?

mesmo

Tive o mesmo problema depois de atualizar o react-native
Isso corrigiu meu problema https://github.com/OneSignal/react-native-onesignal/issues/651#issuecomment -429062289

Tive o mesmo problema ao atualizar a versão RN para 0.63.2 e tentar arquivar o aplicativo e fui corrigido
por este.

Era uma incompatibilidade de versão entre a versão que eu especifiquei no Podfile e a versão de destino que
Eu configurei para a extensão OneSignal. Assim que modifiquei esses dois valores para corresponderem um ao outro,
o problema foi embora.

Podfile
image

OneSignalNotificationExtension (ou qualquer outro nome que você tenha nomeado para a extensão de notificação)
image

Eu tenho o mesmo problema, mas nenhuma das dicas acima resolveu meu problema.

Tenho 2 projetos bastante semelhantes: um que funciona e outro que não funciona.

No xcode, as etapas de compilação e arquivamento estão ok, mas no meu CI ou no meu computador o comando abaixo é bem-sucedido em um projeto, mas falha no outro

xcodebuild "-workspace" "/Users/vagrant/git/packages/mobile-pro/ios/WecasaPro.xcworkspace" "-scheme" "WecasaPro" "-configuration" "Staging" "COMPILER_INDEX_STORE_ENABLE=NO" "archive" "-archivePath" "/var/folders/6q/wgy6jtp12w5gzgm9lzcglpqw0000gn/T/__archive__581470914/WecasaPro.xcarchive" "-destination" "generic/platform=iOS" | xcpretty

Se eu olhar os logs do comando. Para o projeto que funciona eu tenho

▸ Building Pods/Pods-OneSignalNotificationServiceExtension [Staging]
▸ Check Dependencies
▸ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
▸ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
▸ Building library libPods-OneSignalNotificationServiceExtension.a
▸ Building library libPods-OneSignalNotificationServiceExtension.a
▸ Building WecasaPro/OneSignalNotificationServiceExtension [Staging]
▸ Check Dependencies
▸ Processing Info.plist
▸ Running script '[CP] Check Pods Manifest.lock'
▸ Compiling NotificationService.m
▸ Linking OneSignalNotificationServiceExtension
▸ Generating 'OneSignalNotificationServiceExtension.appex.dSYM'
▸ Touching OneSignalNotificationServiceExtension.appex
▸ Signing /Users/vagrant/Library/Developer/Xcode/DerivedData/WecasaPro-fuytaarwfdjqjucxpzvnzgjrhcvd/Build/Intermediates.noindex/ArchiveIntermediates/WecasaPro/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/OneSignalNotificationServiceExtension.appex
▸ Touching OneSignalNotificationServiceExtension.appex.dSYM

Para o projeto que não funciona eu tenho

▸ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
▸ Compiling Pods-OneSignalNotificationServiceExtension-dummy.m
▸ Running script 'Copy generated compatibility header'
▸ Building library libPods-OneSignalNotificationServiceExtension.a

Verifiquei a configuração de ambos os projetos várias vezes e eles parecem ser semelhantes.

Alguém tem idéia do que pode causar isso?

Depois de comparar meus logs para os dois projetos, descobri que o que teve sucesso usa o sistema de compilação legado, mas o outro usa o novo sistema de compilação.

Mudei o projeto para um sistema de construção legado, mas o problema ainda está lá.

No projeto que dá certo, eu tenho

CompileC /Users/scesbron/Library/Developer/Xcode/DerivedData/WecasaPro-guwmidkqvxjubvhfovvxnfhourjd/Build/Intermediates.noindex/ArchiveIntermediates/WecasaPro/IntermediateBuildFilesPath/Pods.build/Staging-iphoneos/Pods-OneSignalNotificationServiceExtension.build/Objects-normal/arm64/Pods-OneSignalNotificationServiceExtension-dummy.o Target\ Support\ Files/Pods-OneSignalNotificationServiceExtension/Pods-OneSignalNotificationServiceExtension-dummy.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler

e depois

Libtool /Users/scesbron/Library/Developer/Xcode/DerivedData/WecasaPro-guwmidkqvxjubvhfovvxnfhourjd/Build/Intermediates.noindex/ArchiveIntermediates/WecasaPro/IntermediateBuildFilesPath/Pods.build/Staging-iphoneos/Pods-OneSignalNotificationServiceExtension.build/Objects-normal/armv7/libPods-OneSignalNotificationServiceExtension.a normal armv7

mas no outro projeto após a compilação eu tenho um comando Ld

Ld /Users/scesbron/Library/Developer/Xcode/DerivedData/wecasa-hcsnerxmdxdzhhhetgrrfvjexliq/Build/Intermediates.noindex/ArchiveIntermediates/wecasa/IntermediateBuildFilesPath/wecasa.build/Release-iphoneos/OneSignalNotificationServiceExtension.build/Objects-normal/armv7/OneSignalNotificationServiceExtension normal armv7

Não sei qual é a diferença entre esses comandos e não sei porque a sequência não é a mesma

Último comentário sobre meu problema. Removi o destino OneSignalNotificationServiceExtension, os arquivos objetivos-c relacionados e a referência a OneSignal em meu podfile. O comando xcodebuild bem-sucedido.

Eu adicionei de volta um sinal executando todas as etapas descritas no documento https://documentation.onesignal.com/docs/react-native-sdk-setup

Depois disso, meu comando xcodebuild ainda falha em

Ld /Users/scesbron/Library/Developer/Xcode/DerivedData/wecasa-hcsnerxmdxdzhhhetgrrfvjexliq/Build/Intermediates.noindex/ArchiveIntermediates/wecasa/IntermediateBuildFilesPath/wecasa.build/Release-iphoneos/OneSignalNotificationServiceExtension.build/Objects-normal/armv7/Binary/OneSignalNotificationServiceExtension` normal armv7

a pasta /Users/scesbron/Library/Developer/Xcode/DerivedData/wecasa-hcsnerxmdxdzhhhetgrrfvjexliq/Build/Intermediates.noindex/ArchiveIntermediates/wecasa/IntermediateBuildFilesPath/wecasa.build/Release-iphoneos/OneSignalNotificationServiceExtension.build/Objects-normal/armv7/Binary está vazia, não contém um arquivo OneSignalNotificationServiceExtension .

Eu tenho o mesmo problema

Então...

Este foi realmente difícil de rastrear, eu tive que recriar um novo projeto RN 064.1 para realmente encontrar a solução para meus problemas. Estou usando esquemas em meus projetos e aplicando correções para que ele seja compilado corretamente no M1.

Como o projeto foi atualizado para usar o novo OneSignalXCFramework vez do antigo framework fat, decidi atualizar o NSE para usá-lo também no Podfile.

Estava enfrentando muitos problemas onde o módulo não foi encontrado, incluindo este durante a construção de uma versão de lançamento ou construção para o simulador ou um dispositivo

Acontece que a parte que estava atrapalhando meu código e fazendo com que todo o problema não funcionasse é esta seção no Podfile

installer.pods_project.build_configurations.each do |config|
    config.build_settings["EXCLUDED_ARCHS[iphonesimulator=*]"] = "arm64"
end

No final, eu tive que aplicá-lo apenas para depurar compilações e não liberar compilações. Não sou um desenvolvedor iOS, então não sei os detalhes sobre como excluir um simulador de uma arquitetura faria com que os pods não fossem detectados para o NSE, mas esse era o meu problema.

Remover o bloco inteiro foi o que consertou para mim. Parece que não é mais necessário para o meu projeto, pelo menos.

Esta página foi útil?
0 / 5 - 0 avaliações