Was bedeuten Base SDK, iOS-Bereitstellungsziel, Ziel und Projekt in xcode?

161

Angenommen, ich habe das Basis-SDK auf 7 gesetzt. Was bedeutet das? Dies könnte bedeuten, dass die App unter iOS 7 ausgeführt wird. Dafür ist das iOS-Bereitstellungsziel vorgesehen.

Warum gebe ich diese 3 Werte sowohl im Projekt als auch im Ziel an? Es macht keinen Sinn. Warum zweimal dasselbe angeben?

user4951
quelle
Es gibt eine gute prägnante Antwort auf diese andere neuere Frage: stackoverflow.com/a/41278576/498949
Chris Rae

Antworten:

79

Das Basis-SDK ist das, gegen das Sie Ihre App erstellen (dh Include- und Bibliotheksdateien und Frameworks). Wie Sie sagen, hat dies keine Auswirkungen auf das Bereitstellungsziel, außer auf das Basis-SDK> = Bereitstellungsziel.

Sie legen Build-Einstellungen auf zwei Ebenen fest, da jedes Projekt mehrere Ziele haben kann und Sie möglicherweise nicht für alle Ziele dieselben Einstellungen wünschen. Die Einstellungen auf Projektebene überschreiben die Standardeinstellungen und die Einstellungen auf Zielebene überschreiben die Einstellungen auf Projektebene.

Zum Beispiel habe ich Projekte mit OSX- und iOS-Zielen und einige sind ARC und einige sind MRR. Ich müsste für jedes Projekt unterschiedliche Projekte haben, wenn ich keine Build-Einstellungen mit der von Xcode zugelassenen Granularität festlegen könnte.

Trojaner
quelle
196

In iOS 7 TechTalk , Sitzung Architecting Modern Apps, Teil 2, wird dies klar erläutert

Geben Sie hier die Bildbeschreibung ein

Gut gelesen Hallo! Ich bin verfügbar!

Eine moderne App verwendet möglicherweise iOS 9 als Ziel-SDK und iOS 7 als Bereitstellungsziel. Dies bedeutet, dass Sie unter iOS 7, iOS 8 und iOS 9 ausgeführt werden können und dass Ihnen alle iOS 9-Anrufe zur Verfügung stehen, wenn Sie tatsächlich unter iOS 9 ausgeführt werden.

Weitere Informationen finden Sie in meinem Beitrag SDK und Bereitstellungsziel

onmyway133
quelle
20
Gute Referenz .. und dieser Teil ist gegen 25:17 Uhr in diesem 50-minütigen Video begraben.
Daniel
2
Nett! Aber was passiert, wenn Sie das Basis-SDK auf 7.0 setzen und versuchen, es in iOS 8.0 zu installieren? Müssen wir den letzten XCode herunterladen, um das neueste Base SDK ständig zu unterstützen?
GoRoS
1
@GoRoS Ihre App wird nicht unterstützt, wenn das basierte SDK <iOS 8 ist (Benutzer können nicht aus dem App Store installieren). Da UIKit / Foundation eine dynamische Bibliothek ist, funktionieren Dinge, die über Xcode oder Binärdaten erzwungen werden, möglicherweise, aber die App kann jederzeit abstürzen und ist normalerweise instabil. Das Basis-SDK wird immer mit der entsprechenden Xcode-Version geliefert. Das Base SDK für Xcode ist jedoch für den Simulator vorgesehen, das auf dem Gerät kann jedoch anders sein. Daher ist es wichtig, die Dinge vor dem Versand auf einem realen Gerät zu testen. Das ist das Problem bei allen dynamischen Bibliotheken.
Kunal Balani
2
@chichilatte nein, das brauchst du nicht. Die App unterstützt weiterhin iOS 12, iOS 13, ... aber es gibt keine neuen Funktionen von iOS 12, iOS 13 ... Um die neue Funktion von iOS 12 zu verwenden, müssen Sie mit iOS 12 SDK kompilieren und verwenden APIs von iOS 12.
onmyway133
2
Danke, das macht Sinn. Ich denke, @ Kunal-Balanis Kommentar oben ist falsch.
Chichilatte
67

Das Basis-SDK ist das SDK, mit dem Sie verknüpfen. Das Bereitstellungsziel ist die mindestens erforderliche iOS-Version, die Ihre Anwendung ausführen muss. Sie können eine Anwendung mit SDK 7 erstellen, die unter iOS 6 ausgeführt wird. Dann müssen Sie jedoch darauf achten, keine Funktion oder Methode zu verwenden, die unter iOS 6 nicht verfügbar ist. Wenn Sie dies tun, stürzt Ihre Anwendung unter iOS 6 ab Diese Funktion wird verwendet.

Weitere Informationen finden Sie in der Apple-Dokumentation: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html

V1ru8
quelle