Instruments automator を使用してアプリケーションで一連の UX テストを実行する自動テストを作成しています。問題は、実行している特定のテスト セットの新規インストールでアプリを実行する必要があることです。コマンドラインからシミュレーターでアプリを削除する方法はありますか?
具体的には、次のようなものを探しています。
xcodeBuild -delete myApp.app
Instruments automator を使用してアプリケーションで一連の UX テストを実行する自動テストを作成しています。問題は、実行している特定のテスト セットの新規インストールでアプリを実行する必要があることです。コマンドラインからシミュレーターでアプリを削除する方法はありますか?
具体的には、次のようなものを探しています。
xcodeBuild -delete myApp.app
完全にテストしていませんが、次のようなものが機能する可能性があります。
rm -rf ~/Library/Application\ Support/iPhone\ Simulator/6.0/Applications/*
もちろん、6.0 を適切なシミュレーターのバージョン番号に置き換えてください。
私は実際にここにあるソリューションを使用することになりました: https://stackoverflow.com/a/5128616/608739
Apple スクリプトはうまく機能し、これらの厄介なシミュレーターの問題をすべて回避します。
--------------- 古い投稿 -------------------
jpancoast のリードを使用して、彼のスクリプトを修正し、シミュレーターでアプリの最新バージョンを見つけてクリアしました。
CURRENT_SDK=""
if [ -z "$RUN_ON_SPECIFIC_DEVICE_OPTION" ] ; then
CURRENT_SDK=$(xcodebuild -showsdks | grep 'iphoneos[0-9].[0-9]' | grep -o '[0-9].[0-9]' | head -n1)
else
CURRENT_SDK=$(xcodebuild -showsdks | grep 'iphonesimulator[0-9].[0-9]' | grep -o '[0-9].[0-9]' | head -n1)
fi
rm -rf ~/Library/Application\ Support/iPhone\ Simulator/"$CURRENT_SDK"/Applications/*
スクリプトは、現在デバイスで実行されているかどうかを確認します。次に、最新の SDK に対応するフォルダーを見つけ (プロジェクトがその SDK でビルドされていると仮定)、その SDK バージョンに関連付けられているすべてのアプリケーションを削除します。関心のある特定のアプリのみを削除するように、さらに調整を行うことができます。
iOS のバージョンとアプリの名前を知っていると仮定すると、これは 1 つのアプリを削除するためにまとめたスクリプトです。シミュレーター全体をリセットして、インストールされている他のすべてのアプリを失いたくない場合に便利です。
以下のスクリプトは、私が使用するより大きなスクリプトの一部ですが、示されているように機能するはずです。これを simulator-uninstall.sh として保存しました。次のような方法でアプリをアンインストールできます。
./simulator-uninstall.sh ios=7.1 app="My App"
スクリプトは次のとおりです (注: bash は私の得意分野ではありませんが、これでうまくいきました!):
#!/bin/bash
for p in "$@"; do
# Parse out each param which needs to be of the form key=value
# Then remove any quotes around the value, because we will quote all vars anyway
IFS="=" read argkey argvalue <<< "$p"
argvalue="${argvalue%\"}"
argvalue="${argvalue#\"}"
case $argkey in
ios) IOS_VERSION=$argvalue
;;
app) APP_NAME=$argvalue
;;
esac
done
SIMULATOR_ROOT="$HOME/Library/Application Support/iPhone Simulator/$IOS_VERSION"
# Find the *.app directory
APP_PATH=`find "$SIMULATOR_ROOT/Applications" -name "$APP_NAME.app"`
if [ "$APP_PATH" ]; then
# Ensure simulator isn't running whilst we remove the app
killall "iPhone Simulator"
# Get the parent directory - this will be a UUID, then remove it
APP_DIR=`dirname "$APP_PATH"`
rm -rf "$APP_DIR"
echo "Removed $APP_DIR"
else
echo "App $APP_NAME not found for platform version $IOS_VERSION"
fi
それが役立つことを願っています!