Appleお知らせ こちら) が表示されます。このドキュメントによれば、32ビットと64ビットをサポートする同じバイナリを送信できます。スタックオーバーフローが1つ見つかりました回答 ここ 。しかし、この回答によれば、私たちはshould
を設定しましたdeployment target as IO7+
。しかしApple docは、これを= IOS 7 and IOS 6 support?私の質問は、32ビットと64ビットをサポートするバイナリをどのように生成できるか展開ターゲットIOS6 +?
注:私はxcode 5.0
を使用しています
更新:Question above is fixed by using xcode 5.0.2
。しかし、32ビット用と64ビット用のコードを作成する方法がわかりません。私は1つ知っています。2つのコードを別々に実行する必要がある場合があります。しかし、How can I do?
。たとえば、ios6で非推奨の1つのメソッドが意味する場合、ios 6とios7のコードも提供します。同じケースでここもフォローしたり、他のテクニックを使用したりします。
Xcodeは、32ビットと64ビットの両方のバイナリを含むアプリをビルドできるため、iOS 7を実行しているすべてのデバイスで機能します。iOS6を引き続きサポートする場合は、32ビットのみをビルドする必要があります。来月は、iOS 6では32ビット、iOS 7では32ビットと64ビットをサポートする単一のアプリバイナリを作成できるようにする変更を行います。
アプリを64ビットバイナリに変換する
大まかに言うと、32ビットと64ビットの両方のランタイム環境を対象とするアプリを作成する手順は次のとおりです。
1. Xcode 5.0.1をインストールします。
2.プロジェクトを開きます。 Xcodeにより、プロジェクトを最新化するように求められます。プロジェクトを最新化すると、64ビット用にアプリをコンパイルするときに重要な新しい警告とエラーが追加されます。
3. iOS 5.1.1以降をサポートするようにプロジェクト設定を更新します。 iOS 5.1より前のiOSバージョンをターゲットにしている場合は、64ビットプロジェクトをビルドできません。
4.プロジェクトのアーキテクチャビルド設定を「標準アーキテクチャ(64ビットを含む)」に変更します。
5. 64ビットのランタイム環境をサポートするようにアプリを更新します。新しいコンパイラの警告とエラーは、このプロセスをガイドするのに役立ちます。ただし、コンパイラーがすべての作業を行うわけではありません。このドキュメントの情報を参考にして、独自のコードを調査してください。
6.実際の64ビットハードウェアでアプリをテストします。 iOSシミュレーターは開発中にも役立ちますが、関数呼び出し規則などの一部の変更は、アプリがデバイスで実行されている場合にのみ表示されます。
7. Instrumentsを使用して、アプリのメモリパフォーマンスを調整します。
8.承認のために両方のアーキテクチャを含むアプリを送信します。
この章の残りの部分では、Cocoa Touchアプリを64ビットランタイム環境に移植するときに頻繁に発生する問題について説明します。これらのセクションを使用して、コードを調査するための独自の取り組みを導きます。
iOSアプリは、Objective-C言語とシステムフレームワークによって確立された低レベルのアプリケーションバイナリインターフェイスとコーディング規則に依存しています。 iOS 7以降、一部のiOSデバイスは64ビットプロセッサを使用し、32ビットと64ビットの両方のランタイム環境を提供します。ほとんどのアプリでは、64ビットランタイム環境と32ビットランタイム環境は、次の2つの点で異なります。
64ビットランタイムでは、Cocoa Touchフレームワーク(およびObjective-C言語自体)で使用される多くのデータ型のサイズが増加するか、より厳密なメモリアライメントルールがあります。 「 データ型の変更 」を参照してください。 64ビットランタイムでは、関数呼び出しを行うときに適切な関数プロトタイプを使用する必要があります。 「 関数呼び出しの変更 」を参照してください。
64ビットランタイムのその他の変更
64ビットARM命令セットは32ビット命令セットとは大きく異なります。アプリにアセンブリ言語コードが含まれている場合は、新しい命令セットを使用するようにコードを書き直す必要があります。また、規則がARM標準に完全に一致しないため、iOSの64ビット呼び出し規則の詳細な説明が必要です。詳細については、iOS ABI関数呼び出しガイド)を参照してください 。
高レベルでは、コードを64ビットのクリーンにするために、以下を実行する必要があります。
大まかに言うと、32ビットと64ビットの両方のランタイム環境を対象とするアプリを作成する手順は次のとおりです。
Xcode 5.0.2をインストールします(これだけで完了しました。多分高い方が良いでしょう)
プロジェクトを開きます。 Xcodeにより、プロジェクトを最新化するように求められます。プロジェクトを最新化すると、64ビット用にアプリをコンパイルするときに重要な新しい警告とエラーが追加されます。
IOS 5.1.1以降をサポートするようにプロジェクト設定を更新します。 iOS 5.1より前のiOSバージョンをターゲットにしている場合は、64ビットプロジェクトをビルドできません。
プロジェクトのアーキテクチャビルド設定を「標準アーキテクチャ(64ビットを含む)」に変更します。
64ビットのランタイム環境をサポートするようにアプリを更新します。新しいコンパイラの警告とエラーは、このプロセスをガイドするのに役立ちます。ただし、コンパイラーがすべての作業を行うわけではありません。このドキュメントの情報を参考にして、独自のコードを調査してください。
実際の64ビットハードウェアでアプリをテストします。 iOSシミュレーターは開発中にも役立ちますが、関数呼び出し規則などの一部の変更は、アプリがデバイスで実行されている場合にのみ表示されます。
Instrumentsを使用して、アプリのメモリパフォーマンスを調整します。承認のために両方のアーキテクチャを含むアプリを送信します。
この章の残りの部分では、Cocoa Touchアプリを64ビットランタイム環境に移植するときに頻繁に発生する問題について説明します。これらのセクションを使用して、コードを調査するための独自の取り組みを導きます。
Appleの 2ビットと64ビットをサポートするためのガイド アーキテクチャに従ってください
質問の最初の部分について-Base SDKはiOS 7.0である「最新のiOS SDK」でなければなりません。最小の展開ターゲットはiOS 6.0である必要があります。そうでない場合、アーキテクチャに「64ビット(armv7、armv7s、armv8)を含む標準アーキテクチャ」を選択できません。これらの設定を選択すると、アプリは32ビットと64ビットのどちらかで構築されます。
更新について-32/64ビットアーチに切り替えた後、プロジェクトを分析し、表示される可能性のある新しい警告を修正します。次に、実際の64ビットデバイス(iPhone 5s/iPad Air/iPad mini Retina)でアプリをテストします。アプリでiCloudを使用している場合は、32ビットデバイスと64ビットデバイス間の同期をテストします。役立つ情報は Appleのガイド にあります(@iDevの回答に要約があります)。
[〜#〜]編集[〜#〜]
実際には、最低でも5.1.1ですが、手動で設定するか、展開ターゲットを6.0よりも低く設定する必要があります。 64ビットXcodeは、5.1.1として設定するように要求します。とにかく、64ビットアーチを使用する場合に、なぜ5.1.1をサポートする必要があるのかはわかりません。
コンパイルされたプログラムxcode 5には、32ビットと64ビットの2つのバイナリコードが含まれていました.32ビットシステムでは32ビットコードが呼び出されます.64ビットシステムでは64ビットコードが呼び出されます。同時に、同じプログラムに32ビットコードしかないことを考えてください。64ビットシステムには、32ビットと64ビットの2つのフレームワークが含まれていました。32ビットプログラムを実行している64ビットシステムが基礎となるサポート用の32ビットフレームワーク、64ビットプログラムを実行すると、基礎となるサポート用の64ビットフレームワークが呼び出されます。詳細については、Appleの公式ドキュメント「Cocoa Touchの64ビット移行ガイド」を参照してください。
Xcode 5を使用すると、プログラムを64に簡単にコンパイルできます。基本的な手順は次のとおりです。
サポートデバイスを「ios7」に設定します
「ビルド設定」の「アーキテクチャ」を「標準アーキテクチャ(64ビットを含む)」に変更しました。
32ビットと64ビットの両方のランタイム環境を対象とするアプリを作成します。