Beschreibung:
Gerade von Xcode 10 auf Xcode 12 aktualisiert, bevor dieses Projekt auf v10 erfolgreich erstellt und ausgeführt wurde.
Fehler beim Erstellen des OneSignalNotificationExtension-Ziels:
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
und 100 Fehler mehr
Ich kenne mich mit Xcode und Mac nicht so gut aus, daher tut es mir leid, wenn es nicht klar oder irreführend ist.
Dankeschön
Umfeld
reaktiv 0.63.2
onesignal-react-native 3.9.1
Xcode 12
Über npm installiert und mit Pods verknüpft
Schritte zum Reproduzieren des Problems:
Bauen
Hallo,
Wie sieht Ihre NotificationService.swift
Datei aus? Es sollte etwa so sein:
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)
}
}
}
Sehen Sie sich Schritt 4.3.6 in den Einrichtungsanweisungen an und fahren Sie von dort aus fort, um sicherzustellen, dass Sie alles richtig eingerichtet haben.
Hoffe das hilft. Danke schön
Danke für die Rückmeldung.
Ich verwende die Objective-C-Datei. Soll ich den schnellen verwenden?
Ich dachte, Sie benutzen Swift. Wenn Sie Obj-C verwenden, verwenden Sie das Objective C. Genießen!
Ich habe auch einige Probleme mit Xcode 12
Ich kann das Projekt erfolgreich auf Xcode 11 erstellen. Sobald ich jedoch den Xcode12 öffne und das Projekt baue, erhalte ich die folgende Fehlermeldung:
▸ Linking OneSignalNotificationServiceExtension
❌ clang: error: no such file or directory: '/Users/carloscuesta/project-folder/ios/build/project/Build/Products/Debug-iphonesimulator/libRCTOneSignal.a'
Dies scheint kein Fehler von OneSignal-Seite zu sein. Sieht so aus, als wäre etwas mit Cache oder so etwas komisch,
Dinge die ich probiert habe:
rm -rf ~/Library/Developer/Xcode/DerivedData/
Ich weiß nicht, was ich noch versuchen soll, ich würde sagen, dass alles richtig verlinkt ist, da die Anwendung in der Produktion gut funktioniert und der Build mit Xcode 11 funktioniert.
Ich habe die Bibliothek manuell mit der OneSignal-Anleitung verknüpft. Haben Sie eine Idee, wie Sie dies beheben können? 🙏🏼
Als ich dieses Problem bekam, wurde es normalerweise durch Reinigen der DerivedData
gelöst, aber ich kann den Fehler nicht beseitigen 😞
Ich habe etwas Seltsames entdeckt,
Wenn ich versuche, die Anwendung mit Xcode 12 zu erstellen, schlägt es immer fehl. Wenn ich die Anwendung jedoch zuerst mit Xcode 11 baue und dann Xcode 12 öffne und die App baue, funktioniert es
Sobald ich jedoch den Build bereinige und versuche, mit Xcode 12 erneut zu erstellen, schlägt es wieder mit dem gleichen Fehler fehl 😖
Gleicher Fehler hier mit Xcode 12 und onesignal-react-native 3.9.1 :-(
Projekte funktionierten vor dem Update.
Gleicher Fehler.
Onesignal-SDK -> 2.15.2
reagieren-native-einssignal -> 3.9.1
Hat gut auf xCode 11 funktioniert.
Hallo,
Das ist seltsam @carloscuesta . Haben Sie versucht, einen Unterschied zwischen dem Projekt auf Xcode 11 und 12 zu sehen? Vielleicht ändert 12 aus irgendeinem Grund einige wichtige Build-Einstellungen.
Habe ein ähnliches Problem, als ich meinen Xcode von 11 auf 12 aktualisiert habe.
Hey @rgomezp
Ich kann bestätigen, dass es keine Änderungen von Xcode 11 zu Xcode 12 gibt. Das git status
des Repos ist unverändert.
Ich kann jedoch immer noch den fehlgeschlagenen Build reproduzieren. Und immer wenn ich zum ersten Mal auf Xcode 11 und Xcode 12 nach der Arbeit baue 😕
Hallo,
Ich glaube , dass dies mit dem laufenden Cocoapods - Problem zusammenhängt , über das zuvor hier berichtet
Dies könnte funktionieren, indem Sie x86_64
zu VALID_ARCH
hinzufügen, wenn Sie die App auf dem Simulator ausführen müssen, z. B. x86_64
arm64
arm64e
Dieser Stapelüberlauf enthält möglicherweise die von Ihnen benötigte Lösung.
Hey! Danke für deine Hilfe @rgomezp
Ich werde Ihnen die Ergebnisse meiner Experimente mitteilen!
Ich habe arm64
wie im StackOverflow-Beitrag unter Project
> Architectures
> Excluded Architectures
.
Dies hat das Problem nicht behoben. Ich habe den gleichen Fehler, wenn ich mich über x86_64
beschwere.
Also habe ich x86_64
zu Excluded Architectures
hinzugefügt.
Nach der folgenden Änderung scheint der folgende Fehler behoben zu sein. Ich habe jedoch einen weiteren Fehler bezüglich des 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.
Ich habe jedoch nichts im Zusammenhang mit CodeSign geändert 🤔 – Der Xcode11-Build funktioniert einwandfrei
Nach dem Bereinigen des DerivedData
Builds und starten Sie den Computer neu. Ich sehe einen weiteren Fehler: Link app (i386)
.
Wenn ich den Fehler öffne, sehe ich, dass viele Dateien im Ordner DerivedData
nicht gefunden werden. Keiner von ihnen hat mit OneSignal zu tun. Ich weiß jedoch nicht, warum dies fehlschlägt, wenn es auf Xcode 11 richtig funktioniert. Ich bin gerade so verwirrt 😅
VALID_ARCHS
Das hat bei mir auch nicht funktioniert. Ich habe auch gelesen, dass dies auf Xcode 12 veraltet ist und stattdessen Excluded Architectures
verwendet werden sollte.
Ich hatte keine User-Defined Setting
dafür. Da ich keine CocoaPods verwende und das Modul manuell verlinkt habe.
Ich habe einen interessanten Link gefunden, der über den Fehler "gleiches Zertifikat" mit Xcode spricht, nachdem arm64
.
Es besagt, dass die Erweiterungen diese Architekturen nicht ausschließen sollten . Leider gleicher Fehler :(
Für heute habe ich keine Ideen mehr
Ich kann bestätigen, dass das Erstellen und Ausführen der Anwendung auf einem echten Gerät ohne die Änderungen "Ausgeschlossene Architekturen" keine Fehler auslöst.
Es hängt also zu 100% mit der Architektur des Simulators selbst zusammen
Hola Carlos,
Vielen Dank für die ausführliche Untersuchung. Aus Gründen der Übersichtlichkeit habe ich auch diesen Stapelüberlaufthread gefunden.
Um das @carloscuesta- Problem zusammenzufassen,
Embedded binary is not signed with the same certificate as the parent app...
Fehler wird behoben, indem arm64 und x86_64 zu den ausgeschlossenen Architekturen hinzugefügt werden, gemäß der Anleitung, dies über VALID ARCHS zu verwenden.Carlos, an dieser Stelle bin ich mir nicht sicher, was sonst noch gemacht werden kann, da dies nach einem Nicht-OneSignal-Problem klingt.
Können andere Leute bitte bestätigen, dass der oben verlinkte Cocoapods-Workaround für sie funktioniert, wenn sie Cocoapods _benutzen_?
Hey @rgomezp
Vielen Dank für all die Hilfe, die Sie bereitgestellt haben.
Carlos, an dieser Stelle bin ich mir nicht sicher, was sonst noch gemacht werden kann, da dies nach einem Nicht-OneSignal-Problem klingt.
Ich bin mir mit dieser Aussage nicht 100% sicher, da Wenn ich die Verknüpfung der gesamten OneSignal-Bibliothek aufhebe und die OneSignalNotificationServiceExtension
entferne, baut das Projekt auf Xcode12 auf. Ich weiß nicht, woher der Fehler kommt, das ist sicher und vielleicht ist dies ein besonderer Fall, da die Bibliothek manuell verknüpft ist. Und ich muss nichts anfassen, was mit Architekturen zu tun hat
Aber ja, mal sehen ob wir noch andere Anwendungsfälle finden 👍🏼
Es scheint, dass Xcode 12 für den Simulator mit Architektur erstellt wurde - arm64, i386, x86_64 .
Meine Workaround-Lösung ist also
In meinem Projekt funktioniert es gut.
@stanleyctcl Deine Lösung funktioniert! :tada:
Ich habe das RCTOneSignal
Ziel in der RCTOneSignal
Bibliothek nicht gesehen, in der VALID_ARCHS
als User-Defined
Einstellung definiert war. Dies ist etwas, das wir von der Bibliotheksseite entfernen sollten! Ich werde eine PR machen, um das Problem zu beheben!
Deshalb haben alle meine Änderungen nicht funktioniert. Weil die OneSignal-Bibliothek diese Benutzereinstellung definiert hat.
Hey, danke @stanleyctcl
Deine Lösung hat bei mir funktioniert.
Zuvor war mein Build-On-Release-Modus für den iOS-Simulator fehlgeschlagen. Ich habe einen building for iOS Simulator, but linking in object file built for iOS, file onesignal
Fehler. Aber ich kann den Release-Modus auf einem echten Gerät erstellen, ohne dass Fehler aufgetreten sind. Die obige Lösung hat dieses Problem gelöst.
Nachdem ich Ihre Lösung implementiert habe, konnte ich meine App leider nicht archivieren. Ich habe diesen Fehler.
No architectures to compile for (ARCHS=arm64, VALID_ARCHS=arm64 arm64e armv7 armv7s, EXCLUDED_ARCHS=(
arm64
))
irgendeine Ahnung?
@abdullahizzuddiin Stellen Sie sicher, dass Sie nur die Architektur für iOS-Simulatoren ausgeschlossen haben
Ach, mein Fehler. Ich habe das kleine Detail vergessen. Danke @carloscuesta für den Hinweis. Es stellte sich heraus, dass ich nur Excluded Architecture
ohne VALID ARCHS
aus der RCTOneSignal
Unterprojekt-Build-Einstellung zu entfernen. 🤔
= = =
Ich glaube, ich habe einen Differenzfehler. Ich habe erfolgreich archiviert. Aber nachdem ich "Signierung automatisch verwalten" gewählt hatte, bekam ich diesen Fehler
Ich kann eine App problemlos in einer früheren Version von Xcode im Appstore bereitstellen. Bisher habe ich 11.7 verwendet. Jetzt habe ich 12.0 verwendet und diesen Fehler sofort erhalten, ohne dass mein Repository geändert wurde.
//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
Irgendeine Ahnung? oder sollte ich ein separates Problem erstellen?
ps:
Ich habe mein Problem auch an das Apple Developer Forum gesendet, nur für den Fall, dass dies nicht das Problem dieser Bibliothek ist.
Ich verwende React-native-Onesignal 3.9.1 auf der React native 0.60.0-Version ... Ich kann dieses Problem beheben, indem ich x86_64 in die benutzerdefinierten Einstellungen einfüge (VALID_ARCHS)
Hallo zusammen,
Ich denke, dieses Problem kann sicher geschlossen werden, da es sich nicht um ein OneSignal-Problem zu handeln scheint.
@abdullahizzuddiin
(Anderes Problem, erwägen Sie, ein separates Ticket zu eröffnen)
Aus Gründen der Sichtbarkeit werde ich eine der Antworten auf den Apple Dev Forum-Thread posten:
PROBLEM:
Der Versuch, den Build auf dem tatsächlichen Gerät auszuführen, ist fehlgeschlagen, obwohl der Build auf meinem MacBook Pro erfolgreich ist.
Bei dieser Meldung ist folgender Fehler aufgetreten:
Das Bereitstellungsprofil "iOS Team-Bereitstellungsprofil: com.xxxxxxxxxxxx.Name der -App" enthält nicht das aktuell ausgewählte Gerät "iPhone" (Kennung 0000xxxx-000xxxxxxxxxxxxxxxxxx).
Xcode-Hilfe-Online-Handbuch
Kontoeinstellungen
Verwenden Sie die Konteneinstellungen, um Entwicklerkonto-Assets zu verwalten (Zertifikate und Bereitstellungsprofile zu signieren), Repositorys hinzuzufügen und Server hinzuzufügen.
Um die Kontoeinstellungen zu öffnen, wählen Sie Xcode > Einstellungen und klicken Sie auf Konten.
I Dann habe ich auf Zertifikate verwalten geklickt und mit einem Klick auf das Plus-Symbol ein neues Zertifikat hinzugefügt.
PROBLEM GELÖST:
Ich habe dann meinen Build ausgeführt und mein Signaturfehler behoben, die App wurde auf meinem iPhone 11 Pro Max installiert.
Hoffentlich hilft Ihnen diese Lösung.
Hey @rgomezp
Dieses Problem war eine Mischung aus verschiedenen Problemen. Das, auf das Sie zeigen, hat nichts mit dem Simulator-Problem selbst zu tun, das hat mit RCTOneSignal
zu tun, weil die Verwendung von VALID_ARCHS
Ich weiß nicht, ob wir dieses Problem vollständig schließen sollten, bis das Simulatorproblem gelöst ist.
Hallo @rgomezp
Ich habe den Vorschlag aus dem Apple Dev Forum befolgt, den Sie oben exzerpiert haben. Aber es hat mein Problem nicht gelöst.
Vorübergehend habe ich die Xcode-Version auf 11.7 herabgestuft und konnte erfolgreich erstellen, ausführen und archivieren. Aber ich kann diese Handlungen immer noch in Xcode 12.0 ausführen
Ich werde dies offen lassen, um automatisch von #1053 geschlossen zu werden
Es scheint, dass Xcode 12 für den Simulator mit Architektur erstellt wurde - arm64, i386, x86_64 .
Meine Workaround-Lösung ist also
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)**
In meinem Projekt funktioniert es gut.
Das funktioniert bei mir. Denken Sie daran, es zu löschen. Nicht einfach leer "" machen, da es nicht funktionieren würde
bearbeiten:
Mein Projekt verwendet manuelles Verknüpfen eines Signals 3.2.12.
reaktiv 0.59.9
xcode 12
Ich habe die stanleyctcl-Lösung ausprobiert, die im Simulator für Debug- und Release-Builds funktioniert. Aber beim Build für generische Geräte/Archive hatte ich das gleiche Problem wie abdullahizzuddiin
Keine Architekturen zum Kompilieren (ARCHS=arm64, VALID_ARCHS=arm64 arm64e armv7 armv7s, EXCLUDED_ARCHS=(
arm64
))
Die Lösung, die für mich funktioniert hat, ist
Nur dieses anwenden
2. Remove **VALID ARCHS** from RCTOneSignal subproject build setting. **(VAILD ARCHS was moved to User-Defined of build setting in Xcode 12)**
Dadurch sollte das Archiv funktionieren, aber die Simulatorfreigabe schlägt fehl. Um das zu beheben. Sie müssen alle Projektziele und Pod-Ziele -> Build-Einstellungen -> Architektur -> Nur aktive Architektur erstellen -> Setzen Sie 'Ja' für den Freigabemodus
Erklärung und Schritte auf: https://stackoverflow.com/a/64139830/9232424.
Lesen Sie weiter: https://medium.com/macoclock/deep-drive-xcode-build-settings-827c3ce4811c.
Ach, mein Fehler. Ich habe das kleine Detail vergessen. Danke @carloscuesta für den Hinweis. Es stellte sich heraus, dass ich nur
Excluded Architecture
ohneVALID ARCHS
aus derRCTOneSignal
Unterprojekt-Build-Einstellung zu entfernen. 🤔= = =
Ich glaube, ich habe einen Differenzfehler. Ich habe erfolgreich archiviert. Aber nachdem ich "Signierung automatisch verwalten" gewählt hatte, bekam ich diesen FehlerIch kann eine App problemlos in einer früheren Version von Xcode im Appstore bereitstellen. Bisher habe ich 11.7 verwendet. Jetzt habe ich 12.0 verwendet und diesen Fehler sofort erhalten, ohne dass mein Repository geändert wurde.
//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
Irgendeine Ahnung? oder sollte ich ein separates Problem erstellen?
ps:
Ich habe mein Problem auch an das Apple Developer Forum gesendet, nur für den Fall, dass dies nicht das Problem dieser Bibliothek ist.
Das gleiche Problem ist bei mir in xcode 12 aufgetreten. Haben Sie das Problem gelöst? @abdullahizzuddiin oder du stufen den xcode einfach auf 11.7 herunter
Danke schön
Um im Simulator laufen zu können, muss ich " arm64 " in " Ausgeschlossene Architekturen " hinzufügen.
Aber um die Anwendung auf einem echten Gerät auszuführen, muss ich sie ohne die " Ausgeschlossene Architekturen "
Also muss ich diese Änderung jedes Mal vornehmen, wenn ich laufe.
Ich hoffe das hilft.
Gleiches Problem hier, es kam zurück.
Dasselbe
Dasselbe
Hilfreichster Kommentar
Ich habe auch einige Probleme mit Xcode 12
Ich kann das Projekt erfolgreich auf Xcode 11 erstellen. Sobald ich jedoch den Xcode12 öffne und das Projekt baue, erhalte ich die folgende Fehlermeldung:
Dies scheint kein Fehler von OneSignal-Seite zu sein. Sieht so aus, als wäre etwas mit Cache oder so etwas komisch,
Dinge die ich probiert habe:
rm -rf ~/Library/Developer/Xcode/DerivedData/
Ich weiß nicht, was ich noch versuchen soll, ich würde sagen, dass alles richtig verlinkt ist, da die Anwendung in der Produktion gut funktioniert und der Build mit Xcode 11 funktioniert.
Ich habe die Bibliothek manuell mit der OneSignal-Anleitung verknüpft. Haben Sie eine Idee, wie Sie dies beheben können? 🙏🏼
Als ich dieses Problem bekam, wurde es normalerweise durch Reinigen der
DerivedData
gelöst, aber ich kann den Fehler nicht beseitigen 😞