webentwicklung-frage-antwort-db.com.de

Ist es möglich, ältere iOS-Versionen mit Xcode 4.2 und iOS 5 SDK anzusprechen?

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

Für alle meine Geräte, auf denen iOS mit weniger als 5.0 ausgeführt wird, lautet der Xcode-Befehl "Abgeschlossen für iPhone3GS" und wird nicht ausgeführt. Ich habe mein Bereitstellungsziel auf 3.0 festgelegt, da ich in meiner App keine Funktionen über 3.0 verwende und alle Versionen 3.0 oder höher als Ziel festlegen möchte. Ich habe alle meine Bereitstellungsprofile installiert und auf dem neuesten Stand.

Ich habe xcode beendet und neu gestartet. Ich habe den Build mehrmals gesäubert. Ich habe versucht, armv6 in den Architektur-Build-Einstellungen hinzuzufügen, aber nichts erlaubt mir, meine App mit ios 4.2.1 auf meinem alten Telefon zu erstellen und auszuführen.

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

Bearbeiten: OK, es sieht so aus, als ob iOS SDK 5 die Unterstützung für armv6 standardmäßig eingestellt hat. Sie müssen armv6 im Feld "Architekturen" unter "Build-Einstellungen" sowohl für Ihr Ziel als auch für Ihr Projekt hinzufügen. Dann kann Ihre App auf iPhone 3G-Geräten ausgeführt werden. Die Antwort finden Sie hier Wie man mit iOS 5 für Armv6- und Armv7-Architekturen baut

103
Greg Ellis

Ich hatte das gleiche Problem beim Versuch, ein neu erstelltes Xcode 4.2-Projekt auf einem iPhone 3G 4.2.1 auszuführen. So konnte ich es zum Laufen bringen.

1) Ändern Sie die "Build Settings" des Ziels ==> "Architecture" von "Standard (armv7)" in "other". Addiere armv6 und armv7.

2) Ändern Sie die "Build Settings" des Ziels ==> "Valid Architecture" in armv6 und armv7.

3) Ändern Sie die "Build Settings" des Ziels ==> "iOS Deployment Target" auf iOS 4.2.

enter image description here

4) Öffnen Sie die projects * -Info.plist, entfernen Sie die Einstellung "Erforderliche Gerätefunktionen" (beachten Sie, dass armv7 erforderlich ist) enter image description here

übrigens habe ich das herausgefunden, als ich versuchte, die App manuell über den Organizer hinzuzufügen.

Anwendung kann nicht installiert werden

In der Info.plist für die Anwendung unter /Users/.../TestsDebug.app werden die Gerätefähigkeitsanforderungen angegeben, die von Dev iPhone 3G nicht erfüllt werden

Danach sollte alles funktionieren. Sprechen Sie über eine PITA.

152
mmorris

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

12

mmorris hat mich kurz davor gebracht, das Problem zu lösen ... In der Info.plist musste ich die erforderlichen Gerätefunktionen auf armv6 und nicht auf armv7 einstellen.

3
flizit

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

1
Greg

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

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

1
Foo Bah

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 im Debugger für mich auf älterer Hardware nicht mehr 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 fand ich, dass das Build-Schema der Schuldige ist. Xcode 4.3.3 hat mich beim Upgrade meines Projekts aufgefordert, vom GDB-Debugger auf LLDB zu wechseln. Als ich änderte die Aktion Ausführen meines Schemas zurück zu GDB, konnte ich die App auf meiner alten Hardware von Xcode aus erneut ausführen.

1
otto

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

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

Dieser Befehl unterscheidet sich nur geringfügig von dem, der von anderen angezeigt wird, aber diese Befehle haben die Dateien für mich im SDK-Ordner selbst abgelegt. Wir möchten, dass ein Unterverzeichnis davon mit dem entsprechenden Namen erstellt wird.

0
Tom Boutell

In meinem Fall gab es eine redundante Leitung in den erforderlichen Gerätefunktionen enter image description here

Ich habe es gerade entfernt ...

enter image description here

Hoffentlich hilft es jemand anderem.

0
Arkady