Mehrere SDK's in Xcode

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Mehrere SDK's in Xcode

    Hallo,

    ich habe mir irgendwann mal angewöhnt von den vorherigen XCode Versionen die SDK's unter z.B.:
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
    aufzubewahren, ich glaube ich hatte hier mal einen Fehler...

    Aktuell habe ich Xcode 7.1, das kommt ja mit iOS 9.1
    ich habe aber noch die SDK's von 8.0, 8.3, 8.4 und 9.0 in dem SDK Verzeichnis.

    Wenn ich jetzt die App starten möchte auf z.b einem Gerät das iOS 9.1 drauf hat, dann sieht die Auswal wie folgt aus:
    Bildschirmfoto-2015-10-26-um-12.56.11.png

    Das hängt ja irgendwie mit den BaseSDK Settings von der Reihenfolge etc. zusammen.
    Ist das nur für den Compiler? Weil ob z.B. eine API auf dem Gerät vorhanden ist kann ich ja nur mit z.B. mit

    if(xx respondToSelector:)

    prüfen oder?

    Kann mir jemand sagen ob das komplett unnötig ist das ich die SDK's behalte und wenn nicht was ich dann damit für Möglichkeiten habe?

    Ich hoff mir kann das jemand erklären :)

    Danke
  • volker schrieb:

    Also laut Quinn the Eskimo von Apple ist das Kopieren der SDKs nicht empfohlen. Deployment-Target angeben und immer die zum Xcode gehörige SDK verwenden. Diese Info gab es im Apple Forum vor kurzem, ich glaube etwas offizielles habe ich dazu nicht gelesen.

    Grüße, Volker
    damit kann man aber nicht testen ob alle verwendeten methoden und klassen auch in den alten systemversionen verfügbar sind welche man supporten will.
  • gritsch schrieb:

    damit kann man aber nicht testen ob alle verwendeten methoden und klassen auch in den alten systemversionen verfügbar sind welche man supporten will.
    Danke für den Hinweis!

    Ich bin der Meinung, dass Xcode 7 das schon prüft. Wenigstens im Swift 2 hat es damit angefangen. In Objective-C bin ich mir grade nicht sicher, da sitze ich nur an altem Code und mache nur kosmetische Korrekturen. Habe aber nochmals nachgesehen und relativiere die Aussage von Quinn der Art: Wenn unbedingt nötig, dann eine alte SDK reinkopieren und auf Compilerfehler prüfen -> um eben die Verwendung neuer SKD-Klassen/Methoden zu prüfen. Aber den Build für eine release Version ebenso wie für den Debugger immer mit der mitgelieferten SDK machen.

    volker
  • volker schrieb:

    gritsch schrieb:

    damit kann man aber nicht testen ob alle verwendeten methoden und klassen auch in den alten systemversionen verfügbar sind welche man supporten will.
    Danke für den Hinweis!
    Ich bin der Meinung, dass Xcode 7 das schon prüft. Wenigstens im Swift 2 hat es damit angefangen. In Objective-C bin ich mir grade nicht sicher, da sitze ich nur an altem Code und mache nur kosmetische Korrekturen. Habe aber nochmals nachgesehen und relativiere die Aussage von Quinn der Art: Wenn unbedingt nötig, dann eine alte SDK reinkopieren und auf Compilerfehler prüfen -> um eben die Verwendung neuer SKD-Klassen/Methoden zu prüfen. Aber den Build für eine release Version ebenso wie für den Debugger immer mit der mitgelieferten SDK machen.

    volker
    versuchs doch aus. mit der 10.11er SDK und deployment target auf 10.10 versuche code zu compilieren welcher GKAgent verwendet.
  • Für die Überprüfung auf nicht verfügbare und veraltetet API aufrufe kann ich Deploymate empfehlen.

    Für die Verwendung von verschiedenen SDK Versionen nutze ich das jeweilige Xcode, diese lade ich aus dem Developer Center und verpasse der App einen Versionspräfix (z.B.: Xcode_7.1.app). So lässt es sich auch leicht mit xcode-select auswählen.
    So handhabe ich es auch auf unserem Build-Server und hatte bisher keine Probleme damit.