XCode7のアプリをiOS7シミュレータで実行(デバッグ不可)


XCode7からiOS7シミュレータが無くなってしまったので、XCode7でビルドしたアプリをXCode6のiOS7シミュレータで実行してみました。動かすだけで、デバッグはできないです。

参考:
Xcode 7 付属のシミュレータに iOS 7.1 シミュレータを登録する
How can I run the iOS 7.1 Simulator in Xcode 7.0 beta 2?

XCode7ビルドのアプリをiOS7シミュレータにインストールする手順(手動)

①XCode7でビルド

②ビルド先出力先からファイルを探す
~/Library/Developer/Xcode/DerivedData/

path例
~/Library/Developer/Xcode/DerivedData/sampleApp-aoojucyaxnqzykfazgwztxxebsfq/Build/Products/Debug-iphonesimulator/sampleApp.app

もしくはデバッグ中にアプリを検索

ターミナルコマンド
ps aux | grep 'CoreSimulator/Devices' | grep '.app'
実行結果
apo        1823   0.0  0.9  2748692  37004   ??  SXs  12:48PM   0:00.30 ~/Library/Developer/CoreSimulator/Devices/BFEDD1F1-E633-4094-ADD0-181C5071366A/data/Containers/Bundle/Application/6CB2178C-CB30-40EE-A853-EEBE4E5FC3CF/sampleApp.app/sampleApp

③XCode6シミュレータ起動
open -a "iOS Simulator"

④メニューのデバイス選択(Hardware→Device)からiOS7シミュレータを選択
32/64bit機種同士なら、機種は違っても問題無い。

⑤XCode6シミュレータのデバイスidを調べる
xcrun /Applications/Xcode6.app/Contents/Developer/usr/bin/simctl list
※/Applications/Xcode6.appは適宜変更

bootedが起動中デバイス
-- iOS 7.1 --
    iPhone 4s (68EE77B6-CAE3-4E22-9AEC-E1B4989FC67C) (Shutdown)
    iPhone 5 (E1401CC0-EADC-470C-9DCF-EF8047021170) (Shutdown)
    iPhone 5s (4A99BE13-D8BA-4F2C-8A56-B5B6D95A54FB) (Booted)

⑥XCode6シミュレータにインストール

xcrun /Applications/Xcode6.app/Contents/Developer/usr/bin/simctl install "4A99BE13-D8BA-4F2C-8A56-B5B6D95A54FB" "~/Library/Developer/Xcode/DerivedData/sampleApp-aoojucyaxnqzykfazgwztxxebsfq/Build/Products/Debug-iphonesimulator/sampleApp.app"

⑦シミュレータにアプリがインストールされてるので実行

シェルスクリプト

手順が面倒なのでシェルスクリプトを書いてみました。

XCode6Run.sh
#!/bin/bash

# アプリ名とXCodeのPath。適宜変更してください
XCodeAppName='sampleApp'
XCode7Path='/Applications/Xcode.app'
XCode6Path='/Applications/Xcode6.app'

#毎回アプリ名を入れる場合はコメントを外す
#echo "アプリ名を入力してください"
#read XCodeAppName

# XCode7シミュレータ起動中デバイスID取得
XCode7BootDeviceid=$(xcrun $XCode7Path"/Contents/Developer/usr/bin/simctl" list | grep -E 'Booted\)$' | awk -F'(' '{print $2}' | awk -F')' '{print $1}')
XCode7BootDeviceid=$(echo $XCode7BootDeviceid | awk -F' ' '{print $1}')
echo "XCode7 Deviceid:"$XCode7BootDeviceid

# XCode7アプリPath取得
XCode7appFilename=$(ps aux | grep 'CoreSimulator/Devices' | grep '.app' | grep $XCode7BootDeviceid | grep $XCodeAppName | awk -F'/Users' '{print "/Users" $2}' | awk -F'.app/' '{print $1 ".app"}')
echo "AppPath:"$XCode7appFilename

# XCode6シミュレータ起動
open -a "iOS Simulator"
echo "XCode6シミュレータのデバイスを変更して、完了したらエンターキーを押して下さい"
read

# deviceIdを指定してシミュレータ起動も可能
#open -a "iOS Simulator" --args -CurrentDeviceUDID 4A99BE13-D8BA-4F2C-8A56-B5B6D95A54FB

# XCode6シミュレータ起動中デバイスID取得
for i in `seq 5`
do
  XCode6BootDeviceid=$(xcrun $XCode6Path"/Contents/Developer/usr/bin/simctl" list | grep -E 'Booted\)$' | awk -F'(' '{print $2}' | awk -F')' '{print $1}')
  if [ -n "$XCode6BootDeviceid" ]; then break; fi
  sleep 1s
done
echo "XCode6 Deviceid:"$XCode6BootDeviceid

# XCode6シミュレータにインストール
xcrun $XCode6Path"/Contents/Developer/usr/bin/simctl" install $XCode6BootDeviceid $XCode7appFilename

①テキストエディタで上記スクリプトを作成して適当な場所に保存
4~6行目のアプリ名とXCodeのPathを適宜変更してください。

②実行権限を変更
chmod u+x XCode6Run.sh

③ターミナルで実行(ファイルを保存した階層で)

./XCode6Run.sh