Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从命令行中删除iOS 8模拟器中的应用程序?_Ios_Xcode_Ios Simulator_Xcode6_Build Automation - Fatal编程技术网

如何从命令行中删除iOS 8模拟器中的应用程序?

如何从命令行中删除iOS 8模拟器中的应用程序?,ios,xcode,ios-simulator,xcode6,build-automation,Ios,Xcode,Ios Simulator,Xcode6,Build Automation,我在iOS模拟器中运行了一个自动化程序,在再次运行之前,我必须将其删除。如何从命令行中从iOS模拟器中删除应用程序 对于每个模拟器设备目录(位于~/Library/Developer/CoreSimulator/Devices/*),I 试图删除/data/Containers/Bundle/Application/和/data/Containers/data/Application/ 即使当我试图通过长按模拟器中的应用程序(应用程序变得抖动)并单击X按钮来删除应用程序时,用户默认设置也没有被清

我在iOS模拟器中运行了一个自动化程序,在再次运行之前,我必须将其删除。如何从命令行中从iOS模拟器中删除应用程序

对于每个模拟器设备目录(位于
~/Library/Developer/CoreSimulator/Devices/*
),I 试图删除
/data/Containers/Bundle/Application/
/data/Containers/data/Application/

即使当我试图通过长按模拟器中的应用程序(应用程序变得抖动)并单击X按钮来删除应用程序时,用户默认设置也没有被清除。我希望应用程序状态为100%干净


我找到了一个很好的解决方案来解决这个问题。

我们找到的一种删除用户默认值的方法是,除了删除应用程序和数据目录之外,还删除
/data/Library/Preferences/*
中的所有文件

但是,在Xcode 6中,命令
xcrun
有一个名为
simctl
的新子命令,允许我管理iOS模拟器,包括重置模拟器和安装应用程序

我提出的解决方案是使用命令

xcrun simctl erase[设备ID]
示例

如果
xcrun simctl list
)返回

9DDA0CFE-7CEC-40B6-A343-1EC01F282B22(激活,断开)
手表:苹果手表系列2-42毫米(88474523-163E-4021-B591-2AEBFA26997)(关机)
电话:iPhone 7 Plus(5785E680-15CD-42D3-82AB-597286A270C5)(关机)
然后运行这两个命令

xcrun simctl erase 88474523-163E-4021-B591-2AEBFA26997
xcrun simctl擦除5785E680-15CD-42D3-82AB-597286A270C5

可以通过运行获取设备ID

xcrun simctl列表
这将重置模拟器(相当于
iOS模拟器>重置内容和设置…
菜单项)

对于Xcode 6.0.1(Build 6A317),卸载应用程序时,用户默认值不会被删除,这可能是一个错误,也可能是行为发生了变化

用法:simctl[--noxpc][--set]帮助[小组命令]
用于控制iOS模拟器的命令行实用程序
对于需要参数的子命令,可以指定设备UDID
或特殊的“booted”字符串,这将导致simctl选择一个引导设备。
如果选择“启动”设备时启动多个设备,则simctl
我会选择其中一个。
子命令:
创建一个新设备。
删除设备。
擦除设备的内容和设置。
引导设备。
关闭设备。
重命名设备。
getenv从正在运行的设备打印环境变量。
打开URL在设备中打开URL。
添加照片将照片添加到设备的照片库中。
在设备上安装应用程序。
从设备卸载应用程序。
通过设备上的标识符启动应用程序。
在设备上生成进程。
列出可用设备、设备类型或运行时。
通知\在设备上发布达尔文通知。
icloud\u sync触发设备上的icloud sync。
帮助打印给定子命令的用法。

对于Xcode 6.1,要卸载应用程序,请使用以下命令:

xcrun simctl uninstall booted com.example.apple-samplecode.UICatalog
其中
com.example.apple samplecode.UICatalog
是要卸载的应用程序的捆绑包标识符。

在一个命令中重置所有内容和设置
  • 退出iPhone模拟器
  • 在终端中,运行:


  • 这将重置Xcode活动版本(由
    Xcode select-p
    引用的版本)的所有模拟器的内容和设置。

    如果您只想删除单个应用程序,则应使用卸载而不是擦除。在Xcode 6.0.1中,即使使用卸载命令,用户默认值也保持不变(这是一个bug)。这就是为什么我建议使用擦除。啊,是的。好的一点,但是这不是Xcode 6.0.1的问题,而是iOS 8.0的问题。如果在模拟的7.x设备上使用“delete”,它可以正常工作。这是一个更干净的实现,特别是包含了“booted”之后,如果没有启动的模拟器,有没有办法无声地失败?我想我可以简单地执行
    xcrun simctl uninstall booted com.example.apple-samplecode.UICatalog | | true
    。当同时在多个模拟器设备上运行时,卸载的应用程序所在的设备是未定义的。在这种情况下,使用设备的UDID而不是
    引导的
    (使用
    xcrun simctl list
    获取可用的UDID),这正是我们需要的!我搜索了一种方法,在每次开始开发UITests时擦除所有内容。
    xcrun simctl erase all
    
    xcrun simctl uninstall simulatorIdentifier appBundleId