2016-09-21 3 views
5

Ein neues XCode-Projekt verfügt über Debug- und Release-Konfigurationen. Ich habe eine neue unter "ProjectName> Info" namens "development" hinzugefügt, die jetzt ein Duplikat von "debug" ist.Neue XCode-Konfiguration und -Schema erstellt - Linker schlägt plötzlich fehl

Ich wollte ein neues Schema zum Erstellen der App im Entwicklungsmodus erstellen, also habe ich das Schema "Projectname" dupliziert und es "DevelopmentScheme" benannt.

Ich legte die Build-Konfiguration für "run" und "Archiv" auf die neue "Entwicklung" -Konfiguration, die ich erstellt habe.

Ich bin immer noch in der Lage, das ursprüngliche Schema zu bauen.

Ich bin auch in der Lage alle erforderlichen Bibliotheken zu bauen, wenn das Projekt mit der Entwicklung Schema konfiguriert ist, aber wenn ich auf die Verknüpfung Phase erhalten, erhalte ich die Fehlermeldung:

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

Being relativ neu in iOS-Entwicklung, ich bin mir nicht sicher, was das Problem sein könnte. Da ich alles kopierte, sollte das nicht bedeuten, dass sie sich genauso verhalten? Gedanken zu den Unterschieden zwischen dem ursprünglichen und dem neuen Schema?

Antwort

18

Das Problem ist, dass Xcode erwartet, die Bibliotheken in einem Ordner zu finden, der nach Ihrer benutzerdefinierten Konfiguration benannt ist. Sie können die benutzerdefinierte Konfiguration zu jeder von Ihnen verwendeten Bibliothek hinzufügen oder die folgenden Schritte ausführen, um die Bibliotheken zu verwenden, die über die Release-Konfiguration erstellt wurden.

Schritte:

  • Wählen Sie Ihr Ziel
  • Open Build Registerkarte Einstellungen
  • Suche nach 'Bibliothek Suchpfade'
  • Sie werden Ihre neuen Konfigurationsnamen neben Debug sehen und Release
  • Doppelklicken Sie auf das Feld neben Ihrem neuen Konfigurationsnamen
  • Geben Sie "$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)"
  • 0 ein
  • Rekursiv auf wahr setzen.

enter image description here

  • Verlassen Sie den Dialog und Sie sollten sehen:

enter image description here

(inspired by this post)

+1

Danke für die Inspiration. Ich habe ein reaktionsnatives Projekt erstellt, und was ich getan habe, war, sowohl den Pfad für die pro Konfiguration erstellten Produkte als auch den Pfad für die provisorischen Builddateien der Konfiguration in '$ (PROJECT_TEMP_DIR)/Release $ (EFFECTIVE_PLATFORM_NAME)' zu ändern. Ich habe Stunden gebraucht, danke Xcode. – tropicalfish

+0

Perfect - Dies behebt das Problem, wo das Hinzufügen eines neuen Schemas Dinge kaputt machte. Vielleicht sollte reactive-native ein 'new-scheme' CLI cmd hinzufügen, was das alles für uns tun würde (nicht, dass es da viel gibt - aber später auf dem Track werden vielleicht mehr Dinge benötigt) – James111

5

Xcode 8.3.2 braucht ein bisschen anders ändert.

Damit es funktioniert, müssen Sie die Per-configuration Build Products Path für Ihre benutzerdefinierte Build-Konfiguration ändern. Zum Beispiel habe ich eine Internal Build-Konfiguration. In diesem Feld, anstelle von $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME), setze ich $(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME), und jetzt funktioniert es :).

+0

Edits müssen mehr als 6 Zeichen sein und das Es ist eine mickrige eine Char-Korrektur: Es ist Pro-Konfiguration Build Products Path :) – jonasl

+0

Haben Sie jemals das Problem mit, "Stellen Sie sicher, dass Sie einen Packager-Server ausführen oder eine .jsbundle-Datei in Ihrem Anwendungspaket enthalten." ? – TomTom

+0

ja .. ich höre einfach auf und starte den packager und das projekt. Es kommt nicht oft vor, mich genug zu nerven, um es zu reparieren. Ich weiß, das ist schlecht, aber ich muss vorher andere Sachen reparieren. – pvinis

Verwandte Themen