Ist es möglich, ältere iOS-Versionen zu verwenden, wenn Xcode 4.2 und iOS 5 SDK verwendet werden?

103

Ich habe kürzlich das Xcode 4.2 mit iOS 5 SDK-Paket heruntergeladen und sofort festgestellt, dass ich meine iPhone 3Gs mit iOS 4.2.1 nicht zum Debuggen verwenden kann. Ich kann nur auf meinem iPhone 4 mit installiertem iOS 5 debuggen und testen.

Für alle meine Geräte mit iOS unter 5.0 sagt Xcode nur "Fertig für iPhone3GS ausgeführt" und führt es nicht aus. Ich habe mein Bereitstellungsziel auf 3.0 festgelegt, da ich in meiner App keine Funktionen über 3.0 verwende und auf alle Versionen 3.0 oder höher abzielen möchte. Ich habe alle meine Bereitstellungsprofile installiert und bin auf dem neuesten Stand.

Ich habe xcode beendet und neu gestartet. Ich habe den Build mehrmals bereinigt. Ich habe versucht, armv6 in den Einstellungen für die Erstellung von Architekturen hinzuzufügen, aber nichts erlaubt mir, meine App auf meinem alten Telefon mit ios 4.2.1 zu erstellen und auszuführen.

Meine Frage ist, ist es möglich, Apps mit dem neuen SDK für iOS-Versionen unter 5 noch funktionsfähig zu machen? Wie kann ich sicher sein, dass meine App weiterhin auf niedrigeren iOS-Versionen ausgeführt wird, wenn ich sie nicht auf meinem alten Telefon installieren kann?

Bearbeiten: OK, es sieht so aus, als hätte iOS SDK 5 die Unterstützung für armv6 standardmäßig eingestellt. Sie müssen armv6 im Feld Architekturen unter Build-Einstellungen für Ihr Ziel und Ihr Projekt hinzufügen. Dann kann Ihre App auf iPhone 3G-Geräten ausgeführt werden. Die Antwort finden Sie hier. So erstellen Sie für armv6- und armv7-Architekturen mit iOS 5

Greg Ellis
quelle
Beachten Sie, dass Ihre Bearbeitung mit Architekturen zu tun hat, was für iOSVersionen ein separates Problem darstellt . Fügen Sie außerdem die Bearbeitung als Antwort hinzu, damit Sie die gefundene Lösung akzeptieren und diese Frage als beantwortet markieren können.

Antworten:

153

Ich hatte das gleiche Problem beim Versuch, ein neu erstelltes Xcode 4.2-Projekt auf einem iPhone 3G 4.2.1 zum Laufen zu bringen. Hier ist, wie ich es zum Laufen bringen konnte.

1) Ändern Sie die "Build-Einstellungen" des Ziels ==> "Architektur" von "Standard (armv7)" in "andere". Fügen Sie armv6 und armv7 hinzu.

2) Ändern Sie die "Build-Einstellungen" des Ziels ==> "Gültige Architektur" in armv6 und armv7.

3) Ändern Sie die "Build-Einstellungen" des Ziels ==> "iOS-Bereitstellungsziel" in iOS 4.2.

Geben Sie hier die Bildbeschreibung ein

4) Öffnen Sie die Projekte * -Info.plist, entfernen Sie die Einstellung "Erforderliche Gerätefunktionen" (beachten Sie, dass armv7 erforderlich ist). Geben Sie hier die Bildbeschreibung ein

Übrigens habe ich das herausgefunden, als ich versucht habe, die App manuell über den Organizer hinzuzufügen, und es wurde berichtet:

Anwendung kann nicht installiert werden

Die Info.plist für die Anwendung unter /Users/.../TestsDebug.app gibt Anforderungen an die Gerätefähigkeit an, die von Dev iPhone 3G nicht erfüllt werden

Danach sollten alle funktionieren. Sprechen Sie über eine PITA.

mmorris
quelle
Vielen Dank! Ich schulde dir etwas Bier! Dies löste tatsächlich meine Probleme, PITA in der Tat: D
Greg Ellis
4
Danke dir! Ich habe an anderer Stelle über die Architektureinstellungen gelesen, aber sonst scheint niemand die Einstellungen für "Erforderliche Gerätefunktionen" zu erwähnen.
Bunnyhero
Ich muss hinzufügen: Sowohl neue als auch alte Projekte sind vom Upgrade betroffen! Ich habe meine alten Sachen vor dem Googeln getestet und sie haben auch nicht funktioniert! Ich schulde dir auch ein Bier! :)
Eduardo Costa
1
Ich habe das gleiche Problem, aber selbst wenn die Projekteinstellungen "Standard armv7" für Architekturen waren, zeigte Valid Architectures bereits "armv6 armv7" an. Außerdem hatte ich in der Info.plist keine Eigenschaft "Erforderliche Gerätefunktionen". Werde den Trick trotzdem versuchen, hoffe es wird funktionieren!
Rchampourlier
Die "erforderlichen Gerätefunktionen" haben mich auch
erwischt
12

Gehen Sie zu Xcode> Einstellungen> Downloads und installieren Sie die Debugging-Unterstützung für ältere iOS-Versionen.

Aleksejs Mjaliks
quelle
Ich ging zu den Einstellungen und lud die Debugging-Unterstützung für ältere Betriebssysteme herunter und installierte sie. Ich beendete xcode, öffnete xcode erneut und führte eine Bereinigung durch, aber die App wurde immer noch nicht auf meinem älteren Gerät installiert. Ich bin jetzt total ratlos, als ich Ihre Antwort sah, dachte ich sicher, dass dies mein Problem beheben würde :(
Greg Ellis
1
Ich schulde dir auch ein Bier! Dies löste ein weiteres Problem, das ich nach dem Xcode 4-Upgrade hatte! Ich kann jetzt mein iOS 4.2-Gerät (iPod Touch 2. Generation) debuggen!
Eduardo Costa
3

mmorris hat mich fast an die Lösung des Problems gebracht ... In der Info.plist musste ich die erforderlichen Gerätefunktionen auf armv6 und nicht auf armv7 setzen. Ich hoffe, dies hilft auch anderen.

flizit
quelle
1

Sie müssen das Telefon anschließen und dann zum Organizer gehen. Xcode sollte automatisch die ältere Version anfordern.

Weitere Informationen finden Sie auf der Entwicklerseite. Es wurde im Anhang zur 4.2 Beta beschrieben

Foo Bah
quelle
Ich habe dies getan und auf "Dieses Gerät für die Entwicklung verwenden" geklickt und es schien das zu tun, was es sollte, aber ich kann immer noch keine App von xcode auf meinem alten Gerät ausführen.
Greg Ellis
1

Beim Versuch, meine App auf einem alten iPod Touch auszuführen, ist ein ähnliches Problem aufgetreten. Ich habe ein Upgrade auf Xcode 4.3.3 durchgeführt und die App wurde auf älterer Hardware für mich nicht mehr im Debugger ausgeführt.

Ich glaube, die anderen Kommentare hier zu "Architekturen" und "Erforderliche Gerätefunktionen" sind wichtige Details, die korrekt angegeben werden müssen. Leider reichten sie nicht aus, um mein Problem zu beheben.

In meinem Fall war das Build-Schema der Schuldige. Xcode 4.3.3 hat mich aufgefordert, beim Upgrade meines Projekts vom GDB-Debugger zur LLDB zu wechseln. Als ich die Aktion "Ausführen" meines Schemas wieder in "GDB" änderte , konnte ich die App auf meiner alten Hardware von Xcode aus erneut ausführen.

otto
quelle
1

Ich fand heraus, dass ich Architekturen armv6 hinzufügen musste, aber es funktionierte immer noch nicht. Und jetzt habe ich armv7 von den erforderlichen Fähigkeiten entfernt, und das war es! Es funktionierte!

Greg
quelle
0

Dies hat bei mir funktioniert und sollte bei Ihnen funktionieren, wenn Sie zuvor eine ältere Version von Xcode hatten. Wenn nicht, sollten Sie den Ratschlägen anderer folgen, um das SDK von einer älteren Version des SDK zu erhalten:

sudo cp -a /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPh

Dieser Befehl unterscheidet sich nur ein wenig von dem, den andere zeigen, aber diese Befehle haben die Dateien für mich im SDKs-Ordner selbst abgelegt - wir möchten, dass ein Unterverzeichnis davon mit dem entsprechenden Namen erstellt wird.

Tom Boutell
quelle
0

In meinem Fall gab es eine redundante Zeile in den erforderlichen Gerätefunktionen Geben Sie hier die Bildbeschreibung ein

Ich habe es gerade entfernt ...

Geben Sie hier die Bildbeschreibung ein

Hoffentlich hilft es jemand anderem.

Arkady
quelle