Installieren Sie Xcode 3.2.3 mit iPhone SDK 4, erhalten Sie "Base SDK fehlt", andere SDKs werden nicht angezeigt

80

Ich habe dieses Community-Wiki erstellt, um eine Reihe anderer Fragen / Antworten zusammenzufügen, die ich hier auf SO gesehen habe. Wenn Sie hier sind, haben Sie wahrscheinlich die endgültige Version von Xcode 3.2.3 mit dem iPhone SDK 4 installiert ( Download-Link , reg reqd) und sind dann auf eines oder beide der folgenden Probleme gestoßen:

  • In Ihrem zuvor funktionierenden Xcode iPhone-Projekt wird irgendwo "Base SDK Missing" angezeigt. Etwas wie das:

    Ruh-roh!

  • In einer verwandten, aber allgemeineren Beobachtung ist keine der zuvor verfügbaren Optionen für Geräte- oder Simulator-SDKs (z. B. 3.0, 3.1, 3.1.3, ...) dort verfügbar, wo Sie sie früher gesehen haben.

Clay Bridges
quelle

Antworten:

165

Überblick

Ich werde erklären, warum dies so ist und wie das spezifische Problem "Base SDK Missing" behoben wird. Sie können nur für die Korrektur nach unten springen, obwohl ich empfehle, all dies zu lesen. Ich empfehle auch John Muchows hervorragende Einstellung zu diesem Thema.

Wenn Sie speziell an dem Xcode 3.2.4-Upgrade interessiert sind, das ein stark verwandtes Problem aufweist, sollten Sie sich hier beraten .

Ein SDK, um sie alle zu regieren

Hier ist der Deal: 4.0 ist jetzt die einzige SDK-Version, die zum Einreichen neuer oder aktualisierter Apps nur für das iPhone zugelassen ist. Dies ist direkt aus Apples iOS 4 Readiness Checklist (reg reqd):

Alle neuen Anwendungen und Updates für vorhandene Anwendungen müssen mit dem iPhone SDK 4 erstellt werden. Bitte beachten Sie, dass der App Store keine Anwendungen mehr unterstützt, die auf iOS 2.x abzielen.

Vermutlich - ich vermute hier - sollten nur iPad- und Universal-Apps das 3.2 SDK verwenden. Aus diesem Grund sind 4.0 und 3.2 Ihre einzige Wahl für SDKs.

Das ist auch der Grund, warum Ihr Projekt jetzt kaputt ist, da das SDK, dem es zuvor zugeordnet wurde, veraltet ist , gones-ville.

(Aber) 3 ist eine magische Zahl

Entspannen. Sie können weiterhin auf Geräte mit iPhone OS 3.0 (aber nicht niedriger) abzielen. Das SDK, das Sie zum Kompilieren verwenden, beschränkt die iOS-Version, auf die Sie programmieren oder die Sie unterstützen können , nicht nach unten . Sobald Sie die Dinge in Ihrem Projekt usw. gepatcht haben (siehe nächster Abschnitt), können Sie "iPhone OS Deployment Target" auf eine niedrigere iOS-Version setzen. Für eine kurze Darstellung, wie das geht, vgl. Schritt 7 im nächsten Abschnitt.

Beachten Sie, dass Sie jetzt ein schwieriges Gelände betreten. Ihr üblicher Xcode 3.2.3-Compiler erzwingt nicht länger die Einhaltung von Nur-3.0-Aufrufen und verfügt auch nicht über einen Simulator für diese. Wenn Sie 4.0-Funktionen unterstützen möchten, müssen Sie bedingten Code ausführen, um Abstürze auf 3.0-Geräten zu vermeiden. Spaß.

Sie können weiterhin eine frühere Xcode-Version oder ein SDK herunterladen (von Apple!) Und installieren (siehe hier ). Ja, Sie können mehrere Xcode-Versionen in verschiedenen Verzeichnissen installieren, dh nur eine Version in / Developer ablegen. Sie können den alten Xcode verwenden, um die Konformität Ihrer App mit einem 3.x SDK zu testen und die harte Arbeit auf einen ausgefallenen Compiler und Simulator zu übertragen. Sie können die Produkte der vorherigen SDKs jedoch nicht mehr zum Senden an den App Store verwenden.

FWIW, ich habe vor, genau diese Prüfung durchzuführen, bevor ich versende.

In welchem ​​Zustand ist mein Zustand?

Matt Gallagher hat einen Beitrag zu Cocoa with Love über den bedingten Versionscode mit dem Titel "Tipps und Tricks für bedingten iOS3-, iOS3.2- und iOS4-Code" . Wenn Sie die bedingte Verwendung von 4.0-Funktionen planen, ist dies eine gute Empfehlung, dies zu überprüfen.

Behebung von "Base SDK Missing"

  1. Laden Sie Ihr Projekt
  2. Wählen Sie im Menü Projekt> Projekteinstellungen bearbeiten ...
  3. Wählen Sie unter Architektur> Basis-SDK eine der verfügbaren Geräteoptionen aus: iPhone 3.2 oder iPhone 4.0. Wenn Sie nur ein iPhone sind, ist 4.0 der richtige Weg.
  4. Schließen Sie das Fenster.
  5. Wählen Sie im Menü Projekt> Aktives Ziel bearbeiten "YourTarget".
  6. Wählen Sie unter Architektur> Basis-SDK eine der verfügbaren Geräte- oder Simulatoroptionen aus: iPhone 3.2 oder iPhone 4.0.
  7. Wenn Sie auf frühere iOS-Versionen abzielen möchten, wählen Sie im selben Fenster unter Bereitstellung> iPhone OS-Bereitstellungsziel die niedrigste Version aus, die Sie unterstützen möchten. Beachten Sie, dass die Unterstützung für 2.x-Versionen über den App Store veraltet ist. Siehe das Zitat "Bereitschaftscheckliste" oben.

Basis-SDK-Speicherort für Xcode 4 und höher

Befolgen Sie die obigen Schritte, aber klicken Sie für Schritt 2 auf Folgendes:

  • Wählen Sie den Projektnavigator mithilfe des Ordnersymbols links in der Navigator-Seitenleiste aus
  • Wählen Sie das Projekt aus, das sich oben in dieser Ansicht befindet.
  • Die Projektkonfiguration wird im Haupteditor angezeigt. Wählen Sie oben "Build Settings" und unten den Abschnitt "Architecture".

      Projektnavigator           Build-Einstellungen

(Diese Antwort ist eine leicht angepasste Version von Sherman Lo ‚s Antwort )

Nachtrag

Nähere Informationen zu diesem Thema finden Sie auch in der ersten Antwort auf diese Frage . Es gibt auch einige nützliche Informationen hier .

Clay Bridges
quelle
3
Kurzer Hinweis für diejenigen, die so blind sind wie ich, dass das Element Projekteinstellungen nicht vorhanden ist. Es ist Projekt> Projekteinstellungen bearbeiten.
Lou Zell
1
"Sie können weiterhin eine frühere Xcode-Version herunterladen (von Apple!) Und installieren (z. B. 3.1.4: Leopard, Snow Leopard)." Dieser Link ist eigentlich für 3.1.3 SDK, nicht für 3.1.4.
Entferner
Leute: Dies ist ein Wiki, also zögern Sie nicht, Dinge selbst zu reparieren.
Clay Bridges
2
Beachten Sie, dass die Zieleinstellungen die Projekteinstellungen überschreiben. Sie müssen es nicht an beiden Stellen einstellen. Ich würde empfehlen, dass Sie es nicht in Ihren Zieleinstellungen festlegen (und löschen, wenn es vorhanden ist) und es dann nur in Ihren Projekteinstellungen festlegen. Übrigens: Wenn Sie es in Ihren Projekteinstellungen festlegen, stellen Sie sicher, dass Sie alle Konfigurationen ausgewählt haben. (Oder verwenden Sie die Registerkarte "Allgemein" und legen Sie sie über das Popup "Basis-SDK für alle Konfigurationen" fest.)
Geowar
1
Möglicherweise möchten Sie diese Antwort aktualisieren, um das neue neueste SDK einzuschließen.
Steven Fisher
8

Wenn Sie Ihre Einstellungen korrigieren und weiterhin "Base SDK Missing" sehen und nicht erstellen können, laden Sie Ihr Projekt neu. Ich habe Xcode beendet, aber das Schließen und erneute Öffnen würde wahrscheinlich auch funktionieren.

John Stephen
quelle
warum ist das? Es scheint seltsam, xcode schließen und nur b / c einer Einstellungsänderung wieder laden zu müssen: O
RyBolt
Gute Frage RyBolt, aber so ist es. Apple muss irgendwo etwas zwischenspeichern und durch ein erneutes Laden wird es gelöscht, aber das ist nur eine Vermutung.
John Stephen
5

Die von Clay Bridges angegebenen Links zum Herunterladen früherer Versionen von Xcode- und iPhone OS-SDKs funktionieren nicht. Das Bearbeiten dieser Links, um die erste Instanz von 'iphone' durch 'ios' zu ersetzen, funktioniert jedoch zumindest für den Snow Leopard-Link (jetzt herunterladen).

Die richtigen Links sowie Informationen zur Installation älterer iOS-SDKs in neueren Xcode-Installationen stammen aus diesem Blogeintrag von Chris Fletcher: Howto Install Iphone SDK 2.0.3.1 für Xcode 3.2 Sehr zu empfehlen!

SteveCaine
quelle
Gute Infos, Steve. Ich denke, meine Antwort ist ein Community-Wiki. Jede Möglichkeit, es mit den richtigen Informationen zu bearbeiten. Vielen Dank.
Clay Bridges
Ich bin neu bei StackOverflow und ich denke, ich brauche mehr Punkte, bevor die Site es mir ermöglicht, Beiträge anderer zu bearbeiten. Die Benutzeroberfläche gibt mir keine offensichtliche Möglichkeit, "Diesen Beitrag bearbeiten" für Ihren Beitrag zu sagen. Es tut uns leid.
SteveCaine
3

Ich hatte das gleiche Problem auch. Ich hatte auch ein Problem bei der Verwendung mehrerer Ziele, bei denen beim Zurückschalten auf ein vorheriges Ziel xcode einige Änderungen vergessen wurden, z. B. das Wechseln von einem iOS-Ziel zu einem MacOS-Ziel.

Option / Alt Klicken Sie auf die Dropdown-Liste

enthüllte einige zusätzliche Optionen, die sehr nützlich waren.

user245019
quelle