iDP証明書のないXcode環境の構築

5571 ワード

iOSアプリケーションの開発にはiOS Developerプログラム(iDP)の登録が必要であることはよく知られている.しかし、これは99ドル/年かかります.ただ遊ぶだけでは高すぎます.幸いにも登録しなくてもシミュレータでテストできますが、iOSデバイスでテストしないとなんだか気分が悪くなり、ネット上で解決策を見つけました.
まず必須条件:
  • 脱獄したiOSデバイス
  • Intel CPUのMac、Mac OS X
  • を実行
  • Xcode+iOS SDK(3.1.xはMac OS X 10.5以上、3.2.xはMac OS X 10.6以上、私は3.2.6)
  • 上記の条件を満たしたら、「キーホルダーアクセス」を実行し、「iPhone Developer」という自己署名ルート証明書を作成します.基本的にはデフォルト設定ですが、最初のステップでは「これらのデフォルト値を上書きする」にチェックを付け、「拡張鍵使用拡張」のステップでは「コード署名」に変更する必要があります.詳細については、XCodeの証明書免除開発環境の構築を参照してください.
    最後に信頼されていない証明書が生成されますが、心配しないでください.
    次に「/developer/Platforms/iPhoneOS.platform/info.plist」というファイルを開き、すべての「XCiPhoneOSCodeSignContext」を「XCCodeSignContext」(iPhoneOSを削除して計3カ所)に置き換えます.
    2011年7月11日に更新し、デバッグできない問題を解決する(出典『Xcode 3.2.1 and Jailbroken iPhone 3.1.2 is Build&Go!』):
    ldidsをダウンロードし、/usr/local/binフォルダに解凍し、実行権限を保証します(rootパスワードを入力する必要があります).
    最後に「/developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plugg-ins/iPhoneOS Build System Support.xcplugin/Clontents/Resources/iPhoneCodeSign.xcspec」というファイルを開き、「CommandLine」後の「/usr/bin/codesign」を「/usr/local/bin/ldid 2」に変更します.
    よし、解読终わり、简単に~
    次に解読効果をテストします.
    Xcodeを実行し、プロジェクトを作成または開き、コードに間違いがないことを確認した後、buildオプションを「Device」に変更し、iOSデバイスをデータ線でMacに接続し、「Build and Run」ボタンを押します.
    このiOSデバイスで開発するかどうかを尋ねるウィンドウが表示されるはずです.ここにはもちろんyesが必要ですが、証明書などはありません.直接キャンセルする必要はありません.
    キャンセルしてから運転に失敗しました.心配しないで、手動でcollectを選択して、数分待ってからこのiOSデバイスを開発することができて、LEDも赤から緑に変わりました.
    このウィンドウがポップアップされていない場合は、Windowメニューの下にOrganizerを見つけてiOSデバイスを選択し、「Usefor Development」をクリックします.
    情報を収集する必要があるというメッセージが表示され、「Collect」をクリックします.それから管理人のパスワードとIDPを入力して、そのIDPはもちろんキャンセルして、収集が終わったらいいです.
    それから「Build and Run」をクリックすると、Xcodeの左下隅にiOSデバイスにアプリケーションがインストールされていることが表示され、その後は言うまでもありません.
    しかし、私のようなカップの人は最後の一歩で恥ずかしがって失敗し、iOSのバージョンが低すぎることを示唆しました.私のiPhoneはiOS 4.2.1を実行していますが、iOS SDKは4.3を使用しています.iOSバージョンはiOS SDKのバージョンを下回らなければなりません.
    「Project」-「Edit Project Settings」ダイアログボックスの「Build」タブページに、「iOS Deployment Target」というオプションがあり、「iOS 4.2」以下に変更すればいいことに、ある日偶然気づきました.
    オンラインでデバッグする場合は、このダイアログボックスで「Other Code Signing Flags」を「-gta」に変更し、「Build Active Architecture Only」をチェックする必要があります(または「Architectures」を「Optimized(armv 7)」に変更します).
    ちなみにARMです.
    「Build」タブ・ページの「Architectures」項目では、「Standard(armv 6 armv 7)」と「Optimized(armv 7)」を選択できます.標準的にarmv 6とarmv 7はそれぞれ1部のコードを生成し、最適化はarmv 7のコードのみを生成する.
    iOSデバイスはARM構造プロセッサを使用して、iPhone 3 GS、iPod 3、iPadからarmv 7をサポートし始め、以前のデバイスはarmv 6のみをサポートしていました.したがって、armv 7のみをコードに含めると、初期のデバイスは実行できませんが、生成されるappサイズは減少します.
    特筆すべきは、iOS 4.3もこれらの初期のデバイスにインストールできないため、iOS SDK 4.3以降のAPIに依存している場合はarmv 6を放棄しても損失はありません.このアプリをApp Storeにリリースするには、プロジェクトのInfoを編集する必要があります.plistは、「Required device capabilities」に「armv 7」を加えます.
    ARMについては、性能に関することが3つあります.
    1つは、整数除算命令がないため、整数除算はシステム関数呼び出しにコンパイルされます.(正確には、ARMv 7-RとARMv 7-Mはサポートされていますが、iOSデバイス用のARMv 7-Aはサポートされていません.)
    2つ目は、Thumbコマンドセットがコードサイズを縮小し、メモリ、キャッシュ、コード帯域幅を節約できるため、「Compile for Thumb」はデフォルトで開かれています.しかしThumbは一部のレジスタのみにアクセスでき,浮動小数点ハードウェアにアクセスできないため,浮動小数点演算はシステム関数を呼び出す必要がある.一方,QuartzとCore Animationは浮動小数点座標系を用いて浮動小数点演算を行うことが多いため,Thumbを無効にして性能を向上させてみることができる.ただし、ARMv 7はThumb 2命令セットを使用することができ、すべてのレジスタおよび浮動小数点ハードウェアにアクセスできるので、これらの欠点はない.
    三つ目はGCCで生成されたARMコードが比較的悪いので、LLVMコンパイラを使ってみることができます(「C/C++Compiler Version」を「LLVM GCC 4.2」または「LLVM compiler 1.7」に変更します).
    最後にipaファイルを生成する方法について説明します.
    iTunesを実行し、「ファイル」-「リポジトリに追加⋯」を選択し、プロジェクトのbuildフォルダの下にある.appファイルを「選択」ボタンを押すと、リポジトリにipaファイルが自動的に生成されます.
    2011年10月16日更新:
    Xcode 4.2+iOS SDK 5.0 on Mac OS X 10.7.2解読手順(『Xcode 4.1証明書免除(iDP)開発+本体デバッグ+IPA全攻略生成』より参照):
  • 「/developer/Platforms/iPhoneOS.platform/info.plist」というファイルを開き、すべての「XCiPhoneOSCodeSignContext」を「XCCodeSignContext」(つまりiPhoneOSを削除して計3カ所)に置き換えます.
  • 「/developer/Platforms/iPhoneOS.platform/developer/SDKs/iPhoneOS 5.0.sdk/SDKSettings.plist」というファイルを開き、CODE_SIGNING_REQUIRDとENTITLEMENTS_REQUIRDの値をNOに変更します.
  • ネットワークに接続し、次のコードを実行します(Pythonスクリプトをダウンロードして生成するだけで、危害はありません):
    cd /Developer/
    curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
    mv gen_entitlements.txt gen_entitlements.py
    chmod 777 gen_entitlements.py
  • ProjectのBuild Settingsを開き、すべての「Code Signing Identity」を「Don't Code Sign」に変更します.
  • targetのBuild Phasesを開き、右下の「Add Build Phase」ボタンをクリックし、「Add Run Script」を選択し、これらのコードを入力します:
    export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    /Developer/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
    codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
  • from :   http://www.keakon.net/2011/06/22/%E6%90%AD%E5%BB%BA%E6%97%A0iDP%E8%AF%81%E4%B9%A6%E7%9A%84Xcode%E7%8E%AF%E5%A2%83