Descripción:
Recién actualizado de Xcode 10 a Xcode 12, antes en la v10, este proyecto se construyó y se ejecutó con éxito.
Error de compilación de destino de 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
y 100 errores más
No soy tan bueno con Xcode y Mac, así que lo siento si no es claro o engañoso.
Gracias
Medio ambiente
react-native 0.63.2
onesignal-react-native 3.9.1
Xcode 12
Instalado a través de npm y vinculado con pods
Pasos para reproducir el problema:
Construir
Hola,
¿Cómo se ve su archivo NotificationService.swift
? Debería 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)
}
}
}
Eche un vistazo al paso 4.3.6 en las instrucciones de configuración y continúe desde allí para asegurarse de haber configurado todo correctamente.
Espero que esto ayude. Salud
Gracias por la respuesta.
Estoy usando el archivo Objective-C. ¿Debería usar el rápido?
Pensé que estabas usando Swift. Si está usando Obj-C, use el Objective C. ¡Disfrutar!
También tengo algunos problemas con Xcode 12
Puedo construir con éxito el proyecto en Xcode 11. Sin embargo, tan pronto como abro Xcode12 y construyo el proyecto, aparece el siguiente error:
▸ Linking OneSignalNotificationServiceExtension
❌ clang: error: no such file or directory: '/Users/carloscuesta/project-folder/ios/build/project/Build/Products/Debug-iphonesimulator/libRCTOneSignal.a'
Esto no parece un error del lado de OneSignal. Parece que hay algo extraño con la caché o algo así,
cosas que probé:
rm -rf ~/Library/Developer/Xcode/DerivedData/
No sé qué más debería probar, diría que todo está vinculado correctamente ya que la aplicación funciona bien en Producción y la compilación funciona con Xcode 11.
Tengo la biblioteca vinculada manualmente usando la guía OneSignal, ¿alguna idea sobre cómo solucionar esto? 🙏🏼
Por lo general, cuando recibí este problema, se resolvió limpiando DerivedData
pero no puedo deshacerme del error 😞
He descubierto algo raro
Si intento construir la aplicación con Xcode 12, siempre falla. Sin embargo, si construyo la aplicación primero con Xcode 11 y luego abro Xcode 12 y construyo la aplicación, funciona 🤯
Sin embargo, tan pronto como limpio la compilación e intento reconstruir nuevamente con Xcode 12, comienza a fallar con el mismo error nuevamente 😖
El mismo error aquí con Xcode 12 y onesignal-react-native 3.9.1 :-(
Los proyectos estaban funcionando antes de la actualización.
Mismo error.
SDK de una sola señal -> 2.15.2
react-native-onesignal -> 3.9.1
Funcionó bien en xCode 11.
Hola,
Eso es extraño @carloscuesta . ¿Ha intentado ver una diferencia entre el proyecto en Xcode 11 vs 12? Quizás 12 esté cambiando algunas configuraciones de compilación importantes por alguna razón.
Tuve un problema similar cuando actualicé mi Xcode de 11 a 12 ..
Hola @rgomezp
Puedo confirmar que no hay cambios de Xcode 11 a Xcode 12. El git status
del repositorio no está modificado.
Sin embargo, todavía puedo reproducir la compilación fallida. Y cada vez que construyo en Xcode 11 y Xcode 12 after funciona por primera vez 😕
Hola,
Creo que esto está relacionado con el problema actual de aquí .
Esto podría funcionar agregue x86_64
a VALID_ARCH
si necesita ejecutar la aplicación en el simulador, por ejemplo, x86_64
arm64
arm64e
Este desbordamiento de pila puede contener la solución que necesita.
¡Oye! Gracias por tu ayuda @rgomezp
¡Te contaré los resultados de mis experimentos!
Presenté arm64
como se sugiere en la publicación de StackOverflow en Project
> Architectures
> Excluded Architectures
.
Esto no solucionó el problema. Tengo el mismo error quejándome de x86_64
.
Así que seguí adelante y agregué x86_64
al Excluded Architectures
.
Después del siguiente cambio, el siguiente error parece estar solucionado. Sin embargo, tengo otro error con respecto al 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.
Sin embargo, no cambié nada relacionado con CodeSign 🤔 - La compilación Xcode11 funciona bien
Después de limpiar la compilación DerivedData
y reiniciar la computadora. Veo otro error: Link app (i386)
.
Si abro el error, veo que muchos archivos no se encuentran en la carpeta DerivedData
. Ninguno de ellos relacionado con OneSignal. Sin embargo, no sé por qué esto está fallando si funciona correctamente en Xcode 11. Estoy tan confundido en este momento 😅
VALID_ARCHS
Esto tampoco me ha funcionado. También leí que esto está en desuso en Xcode 12 y que se debe usar Excluded Architectures
su lugar.
No tenía User-Defined Setting
para esto. Como no estoy usando CocoaPods y tengo el módulo vinculado manualmente.
Encontré un enlace interesante que habla sobre el error "mismo certificado" con Xcode después de excluir arm64
.
Dice que las extensiones no deben excluir esas arquitecturas . El mismo error lamentablemente :(
Estoy sin ideas por hoy 😅
Puedo confirmar que la construcción y ejecución de la aplicación en un dispositivo real no arroja ningún error sin las modificaciones de "Arquitecturas excluidas".
Entonces es algo 100% relacionado con la arquitectura del propio simulador.
Hola Carlos,
Gracias por la investigación detallada. Para mayor visibilidad, también encontré este hilo de desbordamiento de pila .
Para resumir el tema de @carloscuesta ,
Embedded binary is not signed with the same certificate as the parent app...
se resuelve agregando arm64 y x86_64 a las Arquitecturas Excluidas , según las instrucciones para usar esto en ARCOS VÁLIDOS.Carlos, en este punto no estoy seguro de qué más se puede hacer, ya que esto suena como un problema que no es de OneSignal.
¿Pueden otras personas confirmar que la solución de Cocoapods vinculada anteriormente funciona para ellos si _están_ usando Cocoapods?
Hola @rgomezp
Gracias por toda la ayuda que brindó.
Carlos, en este punto no estoy seguro de qué más se puede hacer, ya que esto suena como un problema que no es de OneSignal.
No estoy 100% seguro con esta declaración ya que si desvinculo toda la biblioteca OneSignal y elimino el OneSignalNotificationServiceExtension
el proyecto se basa en Xcode12. No sé de dónde proviene el error, eso es seguro y tal vez ese sea un caso específico ya que la biblioteca está vinculada manualmente. Y no tengo que tocar nada relacionado con arquitecturas
Pero sí, veamos si podemos encontrar otros casos de uso 👍🏼
Parece compilación Xcode 12 para simulador con arquitectura: arm64, i386, x86_64 .
Entonces mi solución alternativa es
Funciona bien en mi proyecto.
@stanleyctcl ¡ Tu solución funciona! : tada:
No vi que el objetivo RCTOneSignal
dentro de la biblioteca RCTOneSignal
tuviera el VALID_ARCHS
definido como una configuración User-Defined
. ¡Esto es algo que deberíamos eliminar del lado de la biblioteca! ¡Voy a hacer un PR para solucionar el problema!
Es por eso que todos mis cambios no funcionaron. Porque la biblioteca OneSignal tiene esta configuración de usuario definida.
Hola, gracias @stanleyctcl
Tu solución funcionó para mí.
Anteriormente, fallaba mi compilación en el modo de lanzamiento para iOS Simulator. Recibí el error building for iOS Simulator, but linking in object file built for iOS, file onesignal
. Pero puedo crear el modo de lanzamiento en un dispositivo real sin que aparezcan errores. La solución anterior resolvió este problema.
Desafortunadamente, después de implementar su solución, no pude Archivar mi aplicación. Recibí este error.
No architectures to compile for (ARCHS=arm64, VALID_ARCHS=arm64 arm64e armv7 armv7s, EXCLUDED_ARCHS=(
arm64
))
¿Cualquier pista?
@abdullahizzuddiin Asegúrese de que solo excluyó la arquitectura para simuladores de iOS
Ah, mi mal. Olvidé el pequeño detalle. Gracias @carloscuesta por Excluded Architecture
sin eliminar VALID ARCHS
de la configuración de compilación del subproyecto RCTOneSignal
. 🤔
= = =
Creo que tengo un error de diferencia. He archivado correctamente. Pero, después de elegir "Administrar firmas automáticamente", aparece este error.
Puedo implementar una aplicación en Appstore sin ningún problema en la versión anterior de Xcode. Anteriormente, usé 11.7. Ahora, usé 12.0 e instantáneamente obtuve este error sin ningún cambio en mi repositorio.
//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
¿Cualquier pista? ¿O debería crear un problema separado?
PD:
También envié mi problema al Foro de desarrolladores de Apple en caso de que no sea un problema de esta biblioteca.
Estoy usando react-native-onesignal 3.9.1 en la versión React native 0.60.0 ... Puedo resolver este problema al incluir x86_64 dentro de la configuración definida por el usuario (VALID_ARCHS)
Hola a todos,
Creo que es seguro cerrar este problema, ya que no parece ser un problema de OneSignal.
@abdullahizzuddiin
(Problema diferente, considere abrir un boleto por separado)
Para mayor visibilidad, publicaré una de las respuestas en el hilo del Foro de desarrollo de Apple :
PROBLEMA:
Intentar ejecutar la compilación en el dispositivo real falló, aunque la compilación se realizó correctamente en mi MacBook Pro.
Se produjo el siguiente error con este mensaje:
El perfil de aprovisionamiento "Perfil de aprovisionamiento del equipo iOS: com.xxxxxxxxxxxx.Name of -App" no incluye el dispositivo "iPhone" seleccionado actualmente (identificador 0000xxxx-000xxxxxxxxxxxxxxxxxx).
Manual en línea de ayuda de Xcode
Preferencias de cuentas
Utilice las preferencias de Cuentas para administrar los activos de la cuenta de desarrollador (firma de certificados y perfiles de aprovisionamiento), agregar repositorios y agregar servidores.
Para abrir las preferencias de Cuentas, elija Xcode> Preferencias y haga clic en Cuentas.
Luego hice clic en, administro certificados y agregué un nuevo certificado haciendo clic en el símbolo más.
PROBLEMA RESUELTO:
Luego ejecuté mi compilación y mi error de firma desapareció, la aplicación se instaló en mi iPhone 11 Pro Max.
Espero que esta solución te ayude.
Hola @rgomezp
Este problema fue una mezcla de diferentes problemas. El que está señalando no tiene nada que ver con el problema del Simulador en sí, eso es algo que tiene que ver con RCTOneSignal
porque el uso de VALID_ARCHS
No sé si deberíamos cerrar este problema por completo hasta que se resuelva el del simulador.
Hola @rgomezp
Seguí la sugerencia del Apple Dev Forum que extrajo anteriormente. Pero no resolvió mi problema.
Temporalmente, bajé la versión de Xcode a 11.7 y pude compilar, ejecutar y archivar con éxito. Pero, todavía puedo hacer esos actos en Xcode 12.0
Dejaré esto abierto para que se cierre automáticamente por # 1053
Parece compilación Xcode 12 para simulador con arquitectura: arm64, i386, x86_64 .
Entonces mi solución alternativa es
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 bien en mi proyecto.
Esto funciona para mi. Recuerda eliminarlo. No solo dejarlo en blanco "", ya que no funcionaría
editar:
Mi proyecto utiliza la vinculación manual de una señal 3.2.12.
react-nativo 0.59.9
xcode 12
Probé la solución stanleyctcl que funciona en el simulador para depurar y liberar compilación. Pero cuando construí para un dispositivo / archivo genérico, me enfrenté al mismo problema que abdullahizzuddiin
No hay arquitecturas para compilar (ARCHS = arm64, VALID_ARCHS = arm64 arm64e armv7 armv7s, EXCLUDED_ARCHS = (
arm64
))
La solución que funcionó para mí es
Aplicar esto solo
2. Remove **VALID ARCHS** from RCTOneSignal subproject build setting. **(VAILD ARCHS was moved to User-Defined of build setting in Xcode 12)**
Esto debería hacer que Archive funcione pero la liberación del simulador falle. Para arreglar eso. debe ir a Todos los objetivos del proyecto y el objetivo del pod -> Configuración de compilación -> Arquitectura -> Construir solo arquitectura activa -> Establecer 'Sí' para el modo de lanzamiento
Explicación y pasos en: https://stackoverflow.com/a/64139830/9232424.
Más información: https://medium.com/macoclock/deep-drive-xcode-build-settings-827c3ce4811c.
Ah, mi mal. Olvidé el pequeño detalle. Gracias @carloscuesta por
Excluded Architecture
sin eliminarVALID ARCHS
de la configuración de compilación del subproyectoRCTOneSignal
. 🤔= = =
Creo que tengo un error de diferencia. He archivado correctamente. Pero, después de elegir "Administrar firmas automáticamente", aparece este error.Puedo implementar una aplicación en Appstore sin ningún problema en la versión anterior de Xcode. Anteriormente, usé 11.7. Ahora, usé 12.0 e instantáneamente obtuve este error sin ningún cambio en mi repositorio.
//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
¿Cualquier pista? ¿O debería crear un problema separado?
PD:
También envié mi problema al Foro de desarrolladores de Apple en caso de que no sea un problema de esta biblioteca.
El mismo problema sucedió conmigo en xcode 12, ¿resolvió el problema? @abdullahizzuddiin o
gracias
Para ejecutar en el simulador, tengo que agregar " arm64 " en " Arquitecturas excluidas ".
Pero, para ejecutar la aplicación en un dispositivo real, tengo que dejarla sin las modificaciones de " Arquitecturas excluidas ".
Así que tengo que hacer este cambio cada vez que corro.
Espero que esto ayude.
El mismo problema aquí, volvió.
Mismo
Mismo
Comentario más útil
También tengo algunos problemas con Xcode 12
Puedo construir con éxito el proyecto en Xcode 11. Sin embargo, tan pronto como abro Xcode12 y construyo el proyecto, aparece el siguiente error:
Esto no parece un error del lado de OneSignal. Parece que hay algo extraño con la caché o algo así,
cosas que probé:
rm -rf ~/Library/Developer/Xcode/DerivedData/
No sé qué más debería probar, diría que todo está vinculado correctamente ya que la aplicación funciona bien en Producción y la compilación funciona con Xcode 11.
Tengo la biblioteca vinculada manualmente usando la guía OneSignal, ¿alguna idea sobre cómo solucionar esto? 🙏🏼
Por lo general, cuando recibí este problema, se resolvió limpiando
DerivedData
pero no puedo deshacerme del error 😞