LoginSignup
3
3

More than 5 years have passed since last update.

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

Posted at

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

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3