1

これらの手順に従って、これがios6.0で機能することを知っています。SnowLeopardでiOS5.1SDK for Xcode 4.2を入手することは可能ですか?しかし、これは現在可能ではないようです。誰かが回避策を知っていますか、それともアップグレードする必要がありますか?

4

1 に答える 1

8

まだ可能です。実際、SDK 6.1 を使用した Snow Leopard で XCode 4.2 を使用して、すべての開発を行い、Appstore にアプリケーションを送信できます。ただし、シミュレータ 6.1 を実行することはできません (実際のデバイスを使用してください)。

方法は次のとおりです(いくつかの手順は省略されています)。

  1. データのソースとして使用する Lion/Mountain Lion と XCode 4.5 を備えたシステムを見つける必要があります (私は VMWare に 1 つ持っています)。重要: XCode が適切なシンボルをダウンロードできるように、ios 6.1 を実行している iOS デバイスをそのシステムに接続し、XCode 4.5 オーガナイザーで開く必要があります。

  2. XCode 4.5 のシステムから、次のソース ディレクトリをコピーします。

    デバイス サポート: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/6.1 (10B141)

    SDK: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk

    次のように、tar を使用して各ディレクトリをアーカイブするのが最も便利な場合があります。 tar cvf /tmp/archive.tar << ディレクトリの名前 >>

    注: デバイス サポート ディレクトリの特定のバージョンは異なる場合があります (つまり、「6.1.2 (10B146)」以降)。以下のすべての手順で、お使いの iOS デバイスに一致するものを使用してください。

  3. これらのディレクトリを、XCode 4.2 を使用して Snow Leopard システムの次のディレクトリにコピーする必要があります (XCode のインストールが /Developer にあると仮定します。私のように別の場所にある場合は、必要に応じてパスの最初のコンポーネントを置き換えます)。

    デバイス サポート: /Developer/Platforms/iPhoneOS.platform/DeviceSupport/

    SDK: /Developer/Platforms/iPhoneOS.platform/Developer/SDKs

    tar を使用している場合は、各ディレクトリに移動し、tar xvf /tmp/archive.tar のようにそれぞれの tar アーカイブを抽出します。tar を使用すると、タイムスタンプやシンボリック リンクなどがある場合はそれらを保持できるという利点があります。

    コピー後、Device Support ディレクトリの「Latest」リンクを削除し、次のように「6.1 (10B141)」に再リンクします: ln -s "6.1 (10B141)" Latest

==============================================

この時点で XCode 4.2 を再起動すると、次のことができるようになります。

  • 6.1 デバイスをオーガナイザーに追加し、コードを実行してデバッグします

  • プロジェクトの「最新」として 6.1 SDK を選択し、それに対してビルドします。

==============================================

ただし、4 インチの iPhone 5 画面をサポートしようとしている場合 (Default-568h@2x.png 起動イメージを追加することによって)、そのように構築されたアプリケーションを Appstore に送信することはまだできません。XCode 4.2 は SDK 5.0 をいくつかのアプリケーション アーカイブ内のメタデータの一部であるため、アプリケーションは 5.0 SDK に対してビルドされているようです。Appstoreは、4 インチ画面のサポートを含むバイナリを積極的に拒否し、6.0 以降の SDK に対してビルドされていません。

したがって、すでに真実であることをAppstoreに伝えるために、手作業に頼る必要があります:)

方法は次のとおりです。

  1. アプリケーションをアーカイブします。ファインダーでアーカイブディレクトリを開き(行を右クリックして「ファインダーで表示」)、ターミナルを開き、「cd」と入力し、ディレクトリをターミナルにドラッグアンドドロップして「Enter」を押します。これで、そのディレクトリに移動し、そこでファイルを操作できます。

  2. cd 製品/アプリケーション/yourapp.app

  3. Info.plist という名前のファイルがあります。これはバイナリ形式です。次のように XML に変換します: plutil -convert xml1 Info.plist

  4. お気に入りのエディターで Info.plist を開きます。次のエントリで sdk 5.0 (または SDK のバイナリ値) への参照を見つけて、6.1 への参照に置き換えます。 DTPlatformVersion: 6.1 DTPlatformBuild: 10B141 DTSDKBuild: 10B141 DTSDKName: iphoneos6.1

冒険したい場合は、XCode のバージョンとビルドの値も置き換えてください。私はしませんでした。

  1. plutil -convert binary1 Info.plist

  2. ここで、アプリケーションに再署名する必要があります。アプリケーション バイナリは同じフォルダーにあり、「yourapp」という名前にする必要があります。

そのためには、署名時に使用される埋め込み資格ファイルのコピーが最初に必要になります。

  • XCode 4.5 で作成されたアプリケーション アーカイブからそのファイルをコピーできます: ファイル名を探します: archived-expanded-entitlements.xcent 、アプリケーション ディレクトリにコピーします (念のため、必要かどうかはわかりません)。

  • 次のように現在のアプリケーションから抽出します: codesign -d --entitlements /tmp/entitlements.xml "yourapp"

ファイル /tmp/entitlements.txt をテキスト エディターで開き、< ?xml バージョン タグの前にある奇妙な内容をクリーンアップして保存します。

  1. ここで、配布証明書の正確な名前を見つけます。さまざまな場所からコピーできますが、Keychain Access アプリを開き、配布証明書を選択し、ダブルクリックしてプロパティを開き、「共通名」をコピーするのが最適です。「iPhoneディストリビューション:あなたの会社」のようなものでなければなりません

  2. まだアーカイブ ディレクトリで、次のように codesign を実行します。念のため、最初に現在の署名ファイルを削除します。

    rm -rf _CodeSignature

    次に実行します。

    codesign -f -s "iPhone ディストリビューション: あなたの会社" --entitlements /tmp/entitlements.xml yourapp

これです。アプリケーションは 6.1 SDK に対してビルドされ、そのように表示されます。検証して、オーガナイザーからアプリストアに送信できるはずです。

============================

免責事項: この方法で提出したアプリは、まだ「審査待ち」のままです。この理由で承認/却下された場合は、ここに投稿します。

注: では、なぜこれらのフープを飛び越える必要があるのでしょうか。まあ、いくつかの理由:

  1. どんな環境でも成長できるはずだから、くそっ。

  2. OSX 10.6 上の XCode 4.2 は、PowerPC および OSX 10.4 SDK をサポートする XCode の最後のバージョンです。私のように、そのプラットフォームで実行する必要がある古いデスクトップ製品をサポートする必要がある場合、最後の PowerPC ユーザーがデバイスをドロップするまでそれを使い続ける以外に選択肢はありません。これらの人は古くて粘り強いです。開発に 2 台のマシンを使用することは、私にとって魅力的な選択肢ではありません。

于 2013-03-07T16:32:17.573 に答える