it-swarm.com.de

Wie füge ich Xcode benutzerdefinierte Projektkonfigurationen hinzu, wenn ich CocoaPods verwende?

Ich habe ein iOS/OS X Xcode-Projekt, in dem ich CocoaPods verwende, und ich kann anscheinend nicht herausfinden, wie ich meine eigenen Projektkonfigurationen (zusätzlich zu Debug und Release) hinzufügen kann, ohne den Build vollständig in die Luft zu sprengen.

In dem Projekt habe ich eine Reihe von Zielen für Apps auf beiden Plattformen und deren App-Erweiterungen. Der Xcode-Arbeitsbereich enthält natürlich auch das Pods-Projekt.

Da das Projekt Ziele für iOS und Mac erstellt, benutze ich CocoaPods "Ziele", um ihre Pods zu gruppieren. Mein Podfile sieht ungefähr so ​​aus:

source 'https://github.com/CocoaPods/Specs.git'

target :iOS do
  platform :ios, '7.1'
  link_with 'iOS', 'NozbeToday', 'NozbeShare', 'NozbeWatch'

  # pods...
end

target :Mac do
  platform :osx, '10.9'
  link_with 'Mac'

  # pods...
end

Jetzt habe ich hier ein Problem. Bisher hatte ich nur die Standardkonfigurationen "Debug" und "Release" in meinem Projekt. Ich wollte sie ändern und einige neue für eine andere Kombination aus Bereitstellungsprofil und Paket-ID hinzufügen.

… Und ich stecke fest. Ich kann nicht herausfinden, wie das geht.

Das erste Anzeichen für das Problem war eine Warnung pod install CocoaPods hat die Basiskonfiguration Ihres Projekts nicht festgelegt, da für Ihr Projekt bereits eine benutzerdefinierte Konfiguration festgelegt wurde. Damit die CocoaPods-Integration überhaupt funktioniert, setzen Sie entweder die Basiskonfiguration des Ziels NozbeToday auf Pods/Target Support Files/Pods-iOS/Pods-iOS.dev debug.xcconfig Oder fügen Sie den Pods/Target Support Files/Pods-iOS/Pods-iOS.dev debug.xcconfig In Ihre Build-Konfiguration ein.

Ich konnte nicht herausfinden, was es bedeutet und wie dies behoben werden kann. In jedem Fall würde das Projekt nicht erstellt - im besten Fall würde ich eine Linker-Fehlermeldung erhalten, die besagt, dass es Pods-something.a Nicht finden kann.

48
radex

OK, als ich diese Frage geschrieben habe, habe ich es selbst herausgefunden (yay rubber ducking). Hier ist die Lösung für die nächsten Generationen:

Im Wesentlichen müssen Sie Ihrem Anwendungsschema eine explizite Abhängigkeit vom Pods-Ziel hinzufügen.

So gehen Sie vor: Bearbeiten Sie Ihr Anwendungsschema, gehen Sie zum Abschnitt Erstellen und fügen Sie das Pods-Ziel hinzu oben Ihr Anwendungsziel. Sie sollten so etwas sehen:

enter image description here

Und es wird einfach funktionieren.


Wie für die CocoaPods Warnungen auf pod install, müssen Sie die von CP generierten xcconfig -Dateien für jede Ihrer Xcode-Konfigurationen verwenden. So machst du es:

  • finden Sie die .xcconfig-Dateien in Pods/Target Support Files
  • ziehen Sie sie in die Gruppe "Pods" in Ihrem Xcode-Projekt und legen Sie sie dort ab (fügen Sie nur eine Referenz hinzu. Kopieren Sie sie nicht zum Ziel oder fügen Sie sie zum Build hinzu.)
  • Klicken Sie im Projektnavigator auf das Projekt und wählen Sie das Projekt selbst aus (nicht eines der Ziele). Gehen Sie zu Info und legen Sie unter Konfigurationen die richtigen .xcconfigs für jede Konfiguration und jedes Ziel in der Spalte "Basierend auf Konfigurationsdatei" fest.

Sie benötigen auch so etwas in Ihrem Podfile, um CocoaPods wissen zu lassen, welche Ihrer Xcode-Konfigurationen "debuggen" (nicht optimiert) und welche "veröffentlichen" sind:

project '1Nozbe', {
  'iOS 1 Dev Debug' => :debug,
  'iOS 2 Dev AdHoc' => :release,
  'iOS 3 Release Debug' => :debug,
  'iOS 4 Release AdHoc' => :release,
  'iOS 5 Release AppStore' => :release,
}

Nicht gerade mit CocoaPods verwandt, aber wenn Sie andere (Unterprojekt-) Abhängigkeiten als CP haben, müssen Sie auch zwei Dinge tun:

  • füge explizite Abhängigkeiten zum Teilprojektziel hinzu (wie im Screenshot oben)
  • benennen Sie die Konfigurationen in Ihrem Unterprojekt um bzw. fügen Sie sie hinzu, sodass sie mit denen Ihres Hauptprojekts identisch sind. (Andernfalls weiß Xcode einfach nicht, welche Konfiguration für Ihr Unterprojekt verwendet werden soll.)
42
radex

Fügen Sie diese Zeile in Ihre Konfigurationsdatei ein, genauso wie Sie eine Header-Datei importieren:

#include "Pods/Target Support Files/Pods/Pods.debug.xcconfig"

HINWEIS: Es ist #include, nicht #import

10
leavez