webentwicklung-frage-antwort-db.com.de

Wie Single App Binary 64-Bit- und 32-Bit-Apps unterstützt

Wir können die Apple-Ankündigung hier. Sehen. Gemäß diesem Dokument können wir dieselbe Binärdatei mit Unterstützung für 32-Bit und auch für 64-Bit übergeben. Ich habe eine Stapelüberlaufantwort hier gefunden. Entsprechend dieser Antwort setzen wir shoulddeployment target as IO7+. Aber Apple Doc sagte, Sie können dies mit IOS 7 und IOS 6 Unterstützung einreichen? Meine Frage ist: Wie können Binärdateien mit Unterstützung von 32-Bit und 64-Bit durch das Implementierungsziel IOS6 + generiert werden?

Hinweis: Ich verwende xcode 5.0

Update: Question above is fixed by using xcode 5.0.2. Aber ich bin verwirrt, wie ich Code für 32-Bit und 64-Bit erstellen kann. Ich weiß eine Sache, wir müssen manchmal für zwei getrennt Code schreiben. Aber How can I do?. Wenn zum Beispiel eine in ios6 veraltete Methode bedeutet, stellen wir auch Code für ios 6 und ios7 zur Verfügung. Im gleichen Fall auch hier gefolgt oder eine andere Technik dazu. 

12
Mani

Xcode kann Ihre App mit 32-Bit- und 64-Bit-Binärdateien erstellen, sodass sie auf allen Geräten mit iOS 7 funktioniert. Wenn Sie weiterhin iOS 6 unterstützen möchten, müssen Sie nur 32-Bit-Versionen erstellen. Nächsten Monat werden wir Änderungen vornehmen, mit denen Sie eine einzelne App-Binärdatei erstellen können, die 32-Bit unter iOS 6 sowie 32-Bit und 64-Bit unter iOS 7 unterstützt.

Konvertieren Ihrer App in eine 64-Bit-Binärdatei

Auf hoher Ebene sind hier die Schritte zum Erstellen einer App für die 32-Bit- und die 64-Bit-Laufzeitumgebung aufgeführt:

1.Installieren Sie Xcode 5.0.1.

2.Öffnen Sie Ihr Projekt. Xcode fordert Sie auf, Ihr Projekt zu modernisieren. Durch die Modernisierung des Projekts werden neue Warnungen und Fehler hinzugefügt, die beim Kompilieren Ihrer App für 64-Bit wichtig sind.

3. Aktualisieren Sie Ihre Projekteinstellungen, um iOS 5.1.1 oder höher zu unterstützen. Sie können kein 64-Bit-Projekt erstellen, wenn es auf eine iOS-Version vor iOS 5.1 abzielt.

4.Ändern Sie die Buildeinstellung "Architekturen" in Ihrem Projekt in "Standardarchitekturen (einschließlich 64-Bit)".

5. Aktualisieren Sie Ihre App, um die 64-Bit-Laufzeitumgebung zu unterstützen. Die neuen Compiler-Warnungen und -Fehler helfen Ihnen dabei. Der Compiler erledigt jedoch nicht die gesamte Arbeit für Sie. Verwenden Sie die Informationen in diesem Dokument, um Sie bei der Untersuchung Ihres eigenen Codes zu unterstützen.

6. Testen Sie Ihre App auf aktueller 64-Bit-Hardware. iOS Simulator kann auch während der Entwicklung hilfreich sein, aber einige Änderungen, wie z. B. die Funktionsaufrufkonventionen, sind nur sichtbar, wenn Ihre App auf einem Gerät ausgeführt wird.

7.Verwenden Sie Instruments, um die Speicherleistung Ihrer App zu optimieren.

8. Übermitteln Sie eine App, die beide Architekturen zur Genehmigung enthält.

Der Rest dieses Kapitels beschreibt Probleme, die häufig auftreten, wenn eine Cocoa Touch-App auf die 64-Bit-Laufzeitumgebung portiert wird. In diesen Abschnitten erfahren Sie, wie Sie Ihren Code untersuchen.

From https://developer.Apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertingYourAppto64-Bit.html#//Apple_ref/doc/uid/TP40013501-

19
codercat

iOS-Apps basieren auf einer einfachen binären Anwendungsschnittstelle und Codierungskonventionen, die von der Objective-C-Sprache und den Systemframeworks festgelegt werden. Ab iOS 7 verwenden einige iOS-Geräte 64-Bit-Prozessoren und bieten sowohl eine 32-Bit- als auch eine 64-Bit-Laufzeitumgebung. Bei den meisten Apps unterscheidet sich die 64-Bit-Laufzeitumgebung in zweierlei Hinsicht von der 32-Bit-Laufzeitumgebung:

In der 64-Bit-Laufzeit haben viele von Cocoa Touch-Frameworks verwendete Datentypen (sowie die Sprache Objective-C selbst) an Größe zugenommen oder haben strengere Regeln für die Speicherausrichtung. Siehe „ Änderungen an Datentypen “. Für die 64-Bit-Laufzeit müssen für Funktionsaufrufe geeignete Funktionsprototypen verwendet werden. Siehe „ Änderungen am Funktionsaufruf “.

Binäre Schnittstelle der Anwendung (ABI)

Andere Änderungen an der 64-Bit-Laufzeit

Der 64-Bit-Befehlssatz ARM unterscheidet sich erheblich vom 32-Bit-Befehlssatz. Wenn Ihre App einen Code für die Assembly-Sprache enthält, müssen Sie ihn umschreiben, um den neuen Befehlssatz verwenden zu können. Sie benötigen außerdem eine ausführlichere Beschreibung der 64-Bit-Aufrufkonventionen in iOS, da die Konventionen nicht genau mit dem Standard ARM übereinstimmen. Weitere Informationen finden Sie unter iOS ABI Function Call Guide .

Auf hoher Ebene müssen Sie Folgendes tun, um den Code 64-Bit-Code zu bereinigen:

  1. Vermeiden Sie die Zuweisung von 64-Bit-Ganzzahlen zu 32-Bit-Ganzzahlen.
  2. Vermeiden Sie die Zuweisung von 64-Bit-Zeigern zu 32-Bit-Ganzzahlen.
  3. Vermeiden Sie die Verkürzung von Zeigern und langen Ganzzahlen während arithmetischer Operationen (oder anderen arithmetischen Problemen, die durch die Änderung der Ganzzahltypen verursacht werden).
  4. Behebung von Ausrichtungsproblemen, die durch Änderungen der Datentypgrößen verursacht wurden.
  5. Stellen Sie sicher, dass Speicherstrukturen, die von der 32-Bit- und der 64-Bit-Laufzeit gemeinsam genutzt werden, ein ähnliches Layout aufweisen.
  6. Schreiben Sie jeden Code der Assembly-Sprache neu, damit Ihr Code die neuen 64-Bit-Opcodes und die Laufzeitumgebung verwendet.
  7. Vermeiden Sie, Variadic-Funktionen auf Funktionen anzuwenden, für die eine feste Anzahl von Parametern erforderlich ist, oder umgekehrt.
5
codercat

Auf hoher Ebene sind hier die Schritte zum Erstellen einer App für 32-Bit- und 64-Bit-Laufzeitumgebungen:

Installiere Xcode 5.0.2 (ich habe das nur gemacht, vielleicht ist besser besser)

Öffnen Sie Ihr Projekt. Xcode fordert Sie auf, Ihr Projekt zu modernisieren. Durch die Modernisierung des Projekts werden neue Warnungen und Fehler hinzugefügt, die beim Kompilieren Ihrer App für 64-Bit wichtig sind.

Aktualisieren Sie Ihre Projekteinstellungen, um iOS 5.1.1 oder höher zu unterstützen. Sie können ein 64-Bit-Projekt nicht erstellen, wenn es sich um eine iOS-Version vor iOS 5.1 handelt.

Ändern Sie die Build-Einstellung "Architekturen" in Ihrem Projekt in "Standardarchitekturen (einschließlich 64-Bit)".

Aktualisieren Sie Ihre App, um die 64-Bit-Laufzeitumgebung zu unterstützen. Die neuen Warnungen und Fehler des Compilers werden Sie durch diesen Vorgang führen. Der Compiler erledigt jedoch nicht die gesamte Arbeit für Sie. Verwenden Sie die Informationen in diesem Dokument, um Sie bei der Untersuchung Ihres eigenen Codes zu unterstützen.

Testen Sie Ihre App auf 64-Bit-Hardware. iOS Simulator kann auch während der Entwicklung hilfreich sein. Einige Änderungen, z. B. die Funktionsaufrufkonventionen, sind jedoch nur sichtbar, wenn Ihre App auf einem Gerät ausgeführt wird.

Verwenden Sie Instruments, um die Speicherleistung Ihrer App zu optimieren. Senden Sie eine App, die beide Architekturen enthält, zur Genehmigung.

Der Rest dieses Kapitels beschreibt Probleme, die häufig auftreten, wenn eine Cocoa Touch-App in die 64-Bit-Laufzeitumgebung portiert wird. Verwenden Sie diese Abschnitte, um Ihre eigenen Bemühungen bei der Untersuchung Ihres Codes zu unterstützen.

Folgen Sie der Anleitung zur Unterstützung der 32- und 64-Bit -Architektur von Apple

2
Retro

Zum ersten Teil der Frage - Base SDK sollte "Latest iOS SDK" sein, also iOS 7.0. Das Mindestziel für die Bereitstellung sollte iOS 6.0 sein, oder Sie können für Architekturen nicht "Standardarchitekturen einschließlich 64-Bit (Armv7, Armv7s, Armv8)" auswählen. Nachdem Sie diese Einstellungen ausgewählt haben, wird Ihre App entweder für 32 Bit oder 64 Bit erstellt.

Was das Update betrifft - analysieren Sie nach dem Umschalten auf 32/64-Bit-Bögen Ihr Projekt und korrigieren Sie neue Warnhinweise. Dann testen Sie Ihre App auf einem echten 64-Bit-Gerät (iPhone 5s/iPad Air/iPad Mini-Retina). Wenn Ihre App iCloud verwendet, testen Sie die Synchronisierung zwischen 32- und 64-Bit-Geräten. Hilfreiche Informationen finden Sie in Apples Handbuch (Zusammenfassung von dort in @iDev-Antwort).

EDIT

Ja, das Minimum ist 5.1.1, aber Sie sollten es entweder manuell festlegen oder das Implementierungsziel auf unter 6,0 setzen und wenn Sie Architekturen mit einschließlich auswählen. 64bit Xcode fordert Sie auf, 5.1.1 einzustellen. Ich bin mir jedoch nicht sicher, warum Sie 5.1.1 speziell unterstützen möchten, wenn Sie 64-Bit-Bögen verwenden möchten.

0
Timur Kuchkarov

Das Programm xcode 5 enthält zwei Binärcodes: 32 Bit und 64 Bit. Das 32-Bit-System ruft den 32-Bit-Code auf. Das 64-Bit-System ruft den 64-Bit-Code auf. Zur gleichen Zeit, denken Sie daran, dass das gleiche Programm nur 32-Bit-Code hat, enthielt das 64-Bit-System zwei Frameworks: ein 32-Bit- und ein 64-Bit-System. Wenn das 64-Bit-System, auf dem das 32-Bit-Programm ausgeführt wird, den Aufruf ausführt 32-Bit-Framework für die zugrunde liegende Unterstützung Wenn Sie das 64-Bit-Programm ausführen, wird das 64-Bit-Framework für die zugrunde liegende Unterstützung aufgerufen. Weitere Informationen finden Sie in der offiziellen Dokumentation von Apple "64-Bit Transition Guide for Cocoa Touch".

Verwenden Sie xcode 5 können Sie das Programm einfach in 64 kompilieren. Das grundlegende Verfahren ist wie folgt.

  1. Setzen Sie das Unterstützungsgerät in "ios7".

  2. Die "Architekturen" in "Build Setting" wurden in "Standardarchitekturen (einschließlich 64-Bit)" geändert. 

0
Dracuuula
0
user3279053