OSX Lionのコマンドラインから、iOSアプリビルドを実機に転送する方法

このエントリーをはてなブックマークに追加
はてなブックマーク - OSX Lionのコマンドラインから、iOSアプリビルドを実機に転送する方法

追記: 5/31/2012 別の fork で、Xcode 5.3.2+iOS5.1 で転送と実行まで、正しく動くものがあるようです。最後に追記します。

Fruitstrapというライブラリが、PrivateAPIをたたいて、appファイルを実機に転送することを可能にしているようです。Snow Leopardだけでなく、Lionでも途中まで動いたので経過報告です。
現状で、転送は出来ているのですが、実行が出来ません。引き続き調査をしてくださる方がいればうれしいです。

転送中
転送中

  • Fruitstrapをインストール
  • phildrip/fruitstrap こちらから行いました。これは、メインのブランチではなくて、有志で改造している人のひとりのブランチですので注意してください。

  • Fruitstrapをビルド

  • cd /user/....(cloneしたフォルダ)
    gcc -g -o fruitstrap -framework CoreFoundation -framework MobileDevice -F/System/Library/PrivateFrameworks fruitstrap.c

    これで、fruitstrap というファイル(実行ファイル)が出来ればOK

  • アプリのファイルを作成
  • ここは、Jenkinsなどで、アプリをビルドするところから行う必要があるのですが、今回は手抜きで、Xcodeのアーカイブから、ipaファイルを作って、拡張子を.zipに変えて解凍し、payloadフォルダの中の、 testapp.app を、fruitstrapと同じフォルダにおきました。

  • 実機転送
  • ./fruitstrap install --bundle=testapp.app --debug
    こんな感じのコマンドをたたくと、

    [….] Waiting for iOS device to be connected
    found device id
    [ 0%] Found device (f7722a1785c8ca5c7f8ce6bd5ca70addf37a0210), beginning install
    [ 5%] Copying testapp.app to device
    [ 5%] Copying testapp.app/_CodeSignature to device

    中略

    [ 50%] TakingInstallLock
    [ 52%] CreatingStagingDirectory
    [ 57%] ExtractingPackage
    [ 60%] InspectingPackage
    [ 65%] PreflightingApplication
    [ 70%] VerifyingApplication
    [ 70%] InstallingEmbeddedProfile
    [ 75%] CreatingContainer
    [ 80%] InstallingApplication
    [ 85%] PostflightingApplication
    [ 90%] SandboxingApplication
    [ 95%] GeneratingApplicationMap
    [100%] Installed package PriMasDXII.app
    —— Debug phase ——
    [ 0%] Looking up developer disk image
    [ 30%] Copying DeveloperDiskImage.dmg to device
    [ 90%] Mounting developer disk image
    [ 95%] Developer disk image already mounted
    [100%] Connecting to remote debug server
    ————————-
    tomohisa@Tomos-MBP-17$ Reading symbols for shared libraries ……………… done

    こんな感じで止まってしまって、ctrl-cを押すとコマンドラインに戻ります。アプリは無事転送されて、iPhoneから、アイコンをタップすると正しく実行されるのですが、コマンドラインからの自動実行は動いていないみたいです。

    とりあえず、snow leopardだけじゃなくて、Lionでも、転送は出来るようですよということでした。privateAPIを使っているので、appleによってふさがれる可能性が高いという説明がありました。

    参考リンク
    How to deploy iOS apps to the iPhone via the command line

    追記 2012/5/31


    ここにあるように、walm/fruitstrap · GitHub を使ったら、アプリの起動も正しく動作しました! Norio Nomura / 野村 憲男 (norio_nomura)さん、ありがとうございました!

    Comments

    comments

    Powered by Facebook Comments

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">