1

我正在编写一个自动化测试,它将使用 Instruments 自动化器在我的应用程序上运行一系列 UX 测试。问题是,对于我正在运行的特定测试集,我需要在全新安装上运行该应用程序。有没有办法通过命令行删除模拟器中的应用程序?

具体来说,我正在寻找这样的东西:

xcodeBuild -delete myApp.app
4

3 回答 3

2

像这样的东西可能会起作用,尽管我还没有完全测试过:

rm -rf ~/Library/Application\ Support/iPhone\ Simulator/6.0/Applications/*

当然,用正确的模拟器版本号替换 6.0。

于 2012-11-27T18:22:50.073 回答
0

我实际上最终使用了这里找到的解决方案:https ://stackoverflow.com/a/5128616/608739

苹果脚本运行良好,解决了所有那些讨厌的模拟器问题。

--------------- 旧帖子 -------------------

在 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 版本关联的所有应用程序。可以进一步细化以仅删除您感兴趣的特定应用程序。

于 2012-11-27T20:50:30.537 回答
0

假设您知道 iOS 版本和应用程序的名称,这是我为删除单个应用程序而编写的脚本。如果您不想重置整个模拟器并丢失所有其他已安装的应用程序,它会派上用场。

下面的脚本是我使用的较大脚本的一部分,但应该如图所示工作。我已将此保存为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

希望有帮助!

于 2014-09-01T21:04:23.137 回答