Descrição:
Acabei de atualizar do Xcode 10 para o Xcode 12, antes na v10 este projeto foi construído e executado com sucesso.
Falha na compilação do destino OneSignalNotificationExtension:
Undefined symbol: _swift_getObjCClassMetadata
Undefined symbol: type metadata accessor for Foundation.UUID
Undefined symbol: Swift._bridgeAnythingToObjectiveC<A>(A) -> Swift.AnyObject
Undefined symbol: protocol descriptor for Swift.ExpressibleByFloatLiteral
Undefined symbol: associated conformance descriptor for Swift.ExpressibleByFloatLiteral.Swift.ExpressibleByFloatLiteral.FloatLiteralType: Swift._ExpressibleByBuiltinFloatLiteral
Undefined symbol: associated type descriptor for Swift.ExpressibleByFloatLiteral.FloatLiteralType
Undefined symbol: protocol descriptor for Swift.ExpressibleByIntegerLiteral
Undefined symbol: associated type descriptor for Swift.ExpressibleByIntegerLiteral.IntegerLiteralType
Undefined symbol: method descriptor for Swift.ExpressibleByIntegerLiteral.init(integerLiteral: A.IntegerLiteralType) -> A
Undefined symbol: static Foundation.UUID._unconditionallyBridgeFromObjectiveC(__C.NSUUID?) -> Foundation.UUID
Undefined symbol: value witness table for Builtin.Int32
Undefined symbol: protocol witness table for Swift.Int : Swift._ExpressibleByBuiltinIntegerLiteral in Swift
e mais 100 erros
Não sou tão bom no Xcode e no Mac, então lamento se não for claro ou enganoso.
Obrigado
Ambiente
reagente nativo 0.63.2
Onesinal-reagente-nativo 3.9.1
Xcode 12
Instalado via npm e vinculado a pods
Etapas para reproduzir o problema:
Construir
Olá,
Qual é a aparência do seu arquivo NotificationService.swift
? Deve ser algo como:
import UserNotifications
import OneSignal
class NotificationService: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)?
var receivedRequest: UNNotificationRequest!
var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: <strong i="8">@escaping</strong> (UNNotificationContent) -> Void) {
self.receivedRequest = request;
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
if let bestAttemptContent = bestAttemptContent {
OneSignal.didReceiveNotificationExtensionRequest(self.receivedRequest, with: self.bestAttemptContent)
contentHandler(bestAttemptContent)
}
}
override func serviceExtensionTimeWillExpire() {
// Called just before the extension will be terminated by the system.
// Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
OneSignal.serviceExtensionTimeWillExpireRequest(self.receivedRequest, with: self.bestAttemptContent)
contentHandler(bestAttemptContent)
}
}
}
Dê uma olhada na etapa 4.3.6 nas instruções de configuração e continue a partir daí para garantir que configurou tudo corretamente.
Espero que isto ajude. Saúde
Obrigado pelo feedback.
Estou usando o arquivo Objective-C. Devo usar o rápido?
Achei que você estava usando o Swift. Se você estiver usando Obj-C, use o Objective C. Aproveitar!
Também estou tendo alguns problemas com o Xcode 12
Posso construir o projeto com sucesso no Xcode 11. No entanto, assim que eu abro o Xcode12 e construo o projeto, recebo o seguinte erro:
▸ Linking OneSignalNotificationServiceExtension
❌ clang: error: no such file or directory: '/Users/carloscuesta/project-folder/ios/build/project/Build/Products/Debug-iphonesimulator/libRCTOneSignal.a'
Isso não parece um erro do lado do OneSignal. Parece que há algo estranho com cache ou algo parecido,
coisas que tentei:
rm -rf ~/Library/Developer/Xcode/DerivedData/
Não sei o que mais devo tentar, diria que tudo está vinculado corretamente, pois o aplicativo está funcionando bem na produção e a compilação funciona com o Xcode 11.
Eu tenho a biblioteca vinculada manualmente usando o guia OneSignal, alguma ideia de como consertar isso? 🙏🏼
Normalmente, quando eu recebia esse problema, ele era resolvido com a limpeza de DerivedData
mas não consigo me livrar do erro 😞
Eu descobri algo estranho,
Se tento construir o aplicativo com o Xcode 12, sempre falha. No entanto, se eu construir o aplicativo primeiro com o Xcode 11 e depois abrir o Xcode 12 e construir o aplicativo, ele funcionará 🤯
No entanto, assim que eu limpo o build e tento reconstruir novamente com o Xcode 12, ele começa a falhar com o mesmo erro novamente 😖
Mesmo erro aqui com com Xcode 12 e onesignal-react-native 3.9.1 :-(
Os projetos estavam funcionando antes da atualização.
Mesmo erro.
Onesignal SDK -> 2.15.2
sinal-reativo-nativo -> 3.9.1
Funcionou bem no xCode 11.
Olá,
Isso é estranho @carloscuesta . Você já tentou ver uma diferença entre o projeto no Xcode 11 vs 12? Talvez o 12 esteja alterando algumas configurações de construção importantes por algum motivo.
Tive um problema semelhante quando atualizei meu Xcode de 11 para 12 ..
Ei @rgomezp
Posso confirmar que não há alterações do Xcode 11 para o Xcode 12. O git status
do repo não foi modificado.
No entanto, ainda consigo reproduzir a versão que falhou. E sempre que eu construo no Xcode 11 e Xcode 12 depois de trabalhar pela primeira vez 😕
Olá,
Acredito que isso esteja relacionado ao problema contínuo dos aqui .
Isso pode funcionar para adicionar x86_64
a VALID_ARCH
se for necessário executar o aplicativo no simulador, por exemplo, x86_64
arm64
arm64e
Esse estouro de pilha pode conter a solução de que você precisa.
Ei! Obrigado pela sua ajuda @rgomezp
Vou te contar os resultados dos meus experimentos!
Apresentei arm64
conforme sugerido na postagem StackOverflow em Project
> Architectures
> Excluded Architectures
.
Isso não resolveu o problema. Eu tenho o mesmo erro ao reclamar de x86_64
.
Então fui em frente e adicionei x86_64
a Excluded Architectures
.
Após a seguinte alteração, o seguinte erro parece ter sido corrigido. No entanto, tenho outro erro em relação a OneSignalNotificationServiceExtension.appex
.
Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target's code sign settings match the parent app's.
No entanto, eu não mudei nada relacionado com CodeSign 🤔 - A construção do Xcode11 funciona bem
Depois de limpar a compilação DerivedData
e reinicie o computador. Estou vendo outro erro: Link app (i386)
.
Se eu abrir o erro, vejo que muitos arquivos não foram encontrados na pasta DerivedData
. Nenhum deles está relacionado com OneSignal. No entanto, não sei por que isso está falhando se funciona corretamente no Xcode 11. Estou tão confuso agora 😅
VALID_ARCHS
Isso também não funcionou para mim. Eu também li que isso está obsoleto no Xcode 12 e Excluded Architectures
deve ser usado em seu lugar.
Eu não tinha User-Defined Setting
para isso. Já que não estou usando CocoaPods e tenho o módulo vinculado manualmente.
Achei um link interessante que fala sobre o erro "mesmo certificado" com o Xcode após excluir arm64
.
Ele diz que as extensões não devem excluir essas arquiteturas . Mesmo erro, infelizmente :(
Estou sem ideias para hoje 😅
Posso confirmar que construir e executar o aplicativo em um dispositivo real não gera nenhum erro sem as modificações de "Arquiteturas excluídas".
Então é algo 100% relacionado com a arquitetura do próprio simulador
Olá Carlos,
Obrigado pela investigação detalhada. Para visibilidade, também encontrei este thread de estouro de pilha .
Para resumir o problema @carloscuesta ,
Embedded binary is not signed with the same certificate as the parent app...
é resolvido adicionando arm64 e x86_64 às arquiteturas excluídas , de acordo com a orientação de uso sobre ARCHS VÁLIDOS.Carlos, neste ponto não tenho certeza do que mais pode ser feito, pois isso parece um problema não-OneSignal.
Outras pessoas podem confirmar se a solução alternativa do Cocoapods vinculada acima funciona para eles se eles _estiverem_ usando Cocoapods?
Ei @rgomezp
Obrigado por toda a ajuda que você forneceu.
Carlos, neste ponto não tenho certeza do que mais pode ser feito, pois isso parece um problema não-OneSignal.
Não tenho 100% de certeza com essa declaração, pois se eu desvincular toda a biblioteca OneSignal e remover o OneSignalNotificationServiceExtension
o projeto se baseia no Xcode12. Não sei de onde vem o erro com certeza e talvez seja um caso específico, já que a biblioteca está vinculada manualmente. E não preciso mexer em nada relacionado a arquiteturas
Mas sim, vamos ver se podemos encontrar outros casos de uso 👍🏼
Parece que o Xcode 12 foi construído para o simulador com arquitetura - arm64, i386, x86_64 .
Então, minha solução alternativa é
Funciona bem no meu projeto.
@stanleyctcl Sua solução funciona! : tada:
Eu não vi o destino RCTOneSignal
dentro da biblioteca RCTOneSignal
tinha VALID_ARCHS
definido como uma configuração User-Defined
. Isso é algo que devemos remover do lado da Biblioteca! Vou fazer um PR para corrigir o problema!
É por isso que todas as minhas alterações não funcionaram. Porque a biblioteca OneSignal tem essa configuração do usuário definida.
Ei, obrigado @stanleyctcl
Sua solução funcionou para mim.
Anteriormente, meu modo de versão no build para iOS Simulator falhou. Recebi o erro building for iOS Simulator, but linking in object file built for iOS, file onesignal
. Mas posso construir o modo de liberação no dispositivo real sem que nenhum erro apareça. A solução acima resolveu esse problema.
Infelizmente, depois de implementar sua solução, não consegui arquivar meu aplicativo. Eu tenho esse erro.
No architectures to compile for (ARCHS=arm64, VALID_ARCHS=arm64 arm64e armv7 armv7s, EXCLUDED_ARCHS=(
arm64
))
qualquer pista?
@abdullahizzuddiin Certifique-se de que você
Ah, que pena. Eu esqueci o pequeno detalhe. Obrigado @carloscuesta por me apontar. Acontece que eu só preciso definir Excluded Architecture
sem remover VALID ARCHS
da configuração de construção do subprojeto RCTOneSignal
. 🤔
= = =
Eu acho que tenho erro de diferença. Eu arquivei com sucesso. Mas, depois de escolher "Gerenciar automaticamente a assinatura", recebo este erro
Posso implantar um aplicativo na Appstore sem nenhum problema na versão anterior do Xcode. Anteriormente, eu usei 11.7. Agora, usei o 12.0 e recebi instantaneamente este erro sem nenhuma alteração no meu repo.
//package.json
react-native-onesignal: 3.8.1
//Podfile
pod 'OneSignal', '>= 2.14.2', '< 3.0'
...
target 'OneSignalNotificationServiceExtension' do
pod 'OneSignal', '>= 2.14.2', '< 3.0'
end
Qualquer pista? ou devo criar um problema separado?
ps:
Também enviei meu problema para o Apple Developer Forum, apenas para o caso de não ser o problema desta biblioteca.
Estou usando o react-native-onesignal 3.9.1 na versão do react nativo 0.60.0 ... Sou capaz de resolver esse problema incluindo x86_64 nas configurações definidas pelo usuário (VALID_ARCHS)
Olá a todos,
Acho que esse problema pode ser fechado com segurança, pois não parece ser um problema do OneSignal.
@abdullahizzuddiin
(Problema diferente, considere abrir um tíquete separado)
Para visibilidade, postarei uma das respostas no tópico do
PROBLEMA:
Falha ao tentar executar a compilação no dispositivo real, embora a compilação seja bem-sucedida no meu MacBook Pro.
O seguinte erro ocorreu com esta mensagem:
O perfil de provisionamento "Perfil de provisionamento da equipe iOS: com.xxxxxxxxxxxx.Name of -App" não inclui o dispositivo atualmente selecionado "iPhone" (identificador 0000xxxx-000xxxxxxxxxxxxxxxxxx).
Manual online de ajuda do Xcode
Preferências de contas
Use as preferências de contas para gerenciar ativos de conta de desenvolvedor (certificados de assinatura e perfis de provisionamento), adicionar repositórios e adicionar servidores.
Para abrir as preferências de contas, escolha Xcode> Preferências e clique em Contas.
I Em seguida, cliquei em, gerenciar certificados e adicionei um novo certificado clicando no símbolo de mais.
PROBLEMA RESOLVIDO:
Em seguida, executei minha compilação e meu erro de assinatura foi limpo, o aplicativo foi instalado no meu iPhone 11 Pro Max.
Esperançosamente, esta solução ajuda você.
Ei @rgomezp
Esse problema era uma mistura de problemas diferentes. Aquele que você está apontando não tem nada a ver com o problema do Simulador em si, que tem a ver com RCTOneSignal
porque o uso de VALID_ARCHS
Não sei se devemos encerrar este problema completamente até que o do simulador seja resolvido.
Oi @rgomezp
Segui a sugestão do Apple Dev Forum que você extraiu acima. Mas isso não resolveu meu problema.
Temporariamente, fiz o downgrade da versão do Xcode para 11.7 e consegui construir, executar e arquivar com sucesso. Mas, eu ainda posso fazer isso no Xcode 12.0
Vou deixar isso aberto para ser fechado automaticamente até # 1053
Parece que o Xcode 12 foi construído para o simulador com arquitetura - arm64, i386, x86_64 .
Então, minha solução alternativa é
1. Add **arm64** in **Excluded Architectures** of Project Build setting 2. Remove **VALID ARCHS** from RCTOneSignal subproject build setting. **(VAILD ARCHS was moved to User-Defined of build setting in Xcode 12)**
Funciona bem no meu projeto.
Isso funciona para mim. Lembre-se de excluí-lo. Não apenas deixe em branco "", pois não funcionaria
editar:
Meu projeto usa link manual One signal 3.2.12.
reagente nativo 0,59,9
xcode 12
Eu tentei a solução stanleyctcl que funciona no simulador para depuração e versão de compilação. Mas, ao construir para dispositivo / arquivo genérico, enfrentei o mesmo problema que abdullahizzuddiin
Nenhuma arquitetura para compilar (ARCHS = arm64, VALID_ARCHS = arm64 arm64e armv7 armv7s, EXCLUDED_ARCHS = (
arm64
))
A solução que funcionou para mim é
Aplicar somente isto
2. Remove **VALID ARCHS** from RCTOneSignal subproject build setting. **(VAILD ARCHS was moved to User-Defined of build setting in Xcode 12)**
Isso deve fazer o Archive funcionar, mas a liberação do simulador falhará. Para consertar isso. você precisa ir para Todos os alvos do projeto e alvos do pod -> Configurações de construção -> Arquitetura -> Construir apenas arquitetura ativa -> Definir 'Sim' para o modo de liberação
Explicação e etapas em: https://stackoverflow.com/a/64139830/9232424.
Leia mais: https://medium.com/macoclock/deep-drive-xcode-build-settings-827c3ce4811c.
Ah, que pena. Eu esqueci o pequeno detalhe. Obrigado @carloscuesta por me apontar. Acontece que eu só preciso definir
Excluded Architecture
sem removerVALID ARCHS
da configuração de construção do subprojetoRCTOneSignal
. 🤔= = =
Eu acho que tenho erro de diferença. Eu arquivei com sucesso. Mas, depois de escolher "Gerenciar automaticamente a assinatura", recebo este erroPosso implantar um aplicativo na Appstore sem nenhum problema na versão anterior do Xcode. Anteriormente, eu usei 11.7. Agora, usei o 12.0 e recebi instantaneamente este erro sem nenhuma alteração no meu repo.
//package.json react-native-onesignal: 3.8.1 //Podfile pod 'OneSignal', '>= 2.14.2', '< 3.0' ... target 'OneSignalNotificationServiceExtension' do pod 'OneSignal', '>= 2.14.2', '< 3.0' end
Qualquer pista? ou devo criar um problema separado?
ps:
Também enviei meu problema para o Apple Developer Forum, apenas para o caso de não ser o problema desta biblioteca.
O mesmo problema aconteceu comigo no xcode 12, você resolveu o problema? @abdullahizzuddiin ou u apenas downgrade o xcode para 11.7
obrigada
Para rodar no simulador, tenho que adicionar " arm64 " em " Arquiteturas excluídas ".
Mas, para executar o aplicativo em um dispositivo real, tenho que deixá-lo sem as modificações de " Arquiteturas excluídas ".
Portanto, tenho que fazer essa alteração toda vez que corro.
Eu espero que isso ajude.
O mesmo problema aqui, voltou.
Mesmo
Mesmo
Comentários muito úteis
Também estou tendo alguns problemas com o Xcode 12
Posso construir o projeto com sucesso no Xcode 11. No entanto, assim que eu abro o Xcode12 e construo o projeto, recebo o seguinte erro:
Isso não parece um erro do lado do OneSignal. Parece que há algo estranho com cache ou algo parecido,
coisas que tentei:
rm -rf ~/Library/Developer/Xcode/DerivedData/
Não sei o que mais devo tentar, diria que tudo está vinculado corretamente, pois o aplicativo está funcionando bem na produção e a compilação funciona com o Xcode 11.
Eu tenho a biblioteca vinculada manualmente usando o guia OneSignal, alguma ideia de como consertar isso? 🙏🏼
Normalmente, quando eu recebia esse problema, ele era resolvido com a limpeza de
DerivedData
mas não consigo me livrar do erro 😞