I have an automation running in the iOS Simulator that I have to remove before another run. How do I remove the app from the iOS Simulator from the command line?
我在iOS模拟器中运行自动化,我必须在另一次运行之前删除它。如何从命令行中删除iOS模拟器中的应用程序?
For each simulator device directory (located at ~/Library/Developer/CoreSimulator/Devices/*
), I tried to delete ./data/Containers/Bundle/Application/
and ./data/Containers/Data/Application/
.
对于每个模拟器设备目录(位于〜/ Library / Developer / CoreSimulator / Devices / *),我尝试删除./data/Containers/Bundle/Application/和./data/Containers/Data/Application/。
Even when I tried to delete the app by long pressing the app in the Simulator (the app becomes jiggly) and click on the X button, the user defaults were not being cleared. I want the app state to be 100% clean.
即使我试图通过长时间按下模拟器中的应用程序删除应用程序(应用程序变得晃动)并单击X按钮,用户默认值也没有被清除。我希望应用程序状态100%干净。
I found a good solution to solve this problem.
我找到了解决这个问题的好方法。
4 个解决方案
#1
26
With Xcode 6.1, to uninstall an app, use the following command:
使用Xcode 6.1,要卸载应用程序,请使用以下命令:
xcrun simctl uninstall booted com.example.apple-samplecode.UICatalog
where com.example.apple-samplecode.UICatalog
is the bundle identifier of the application you wish to uninstall.
其中com.example.apple-samplecode.UICatalog是您要卸载的应用程序的包标识符。
#2
13
One approach that we found for deleting user defaults is to delete all files in the ./data/Library/Preferences/*
in addition to deleting application and data directories.
我们发现删除用户默认值的一种方法是删除./data/Library/Preferences/*中的所有文件以及删除应用程序和数据目录。
However, in Xcode 6, the command xcrun
has new subcommand called simctl
that allows me to manage iOS Simulator including resetting the simulator, and installing the application.
但是,在Xcode 6中,命令xcrun有一个名为simctl的新子命令,它允许我管理iOS模拟器,包括重置模拟器和安装应用程序。
The solution that I came up with is to use the command
我想出的解决方案是使用该命令
xcrun simctl erase [device ID]
Example
If xcrun simctl list
(†) returns
如果xcrun simctl list(†)返回
9DDA0CFE-7CEC-40B6-A343-1EC01F282B22 (active, disconnected)
Watch: Apple Watch Series 2 - 42mm (88474523-163E-4021-B591-2AECBFA26997) (Shutdown)
Phone: iPhone 7 Plus (5785E680-15CD-42D3-82AB-597286A270C5) (Shutdown)
then run these 2 commands
然后运行这两个命令
xcrun simctl erase 88474523-163E-4021-B591-2AECBFA26997
xcrun simctl erase 5785E680-15CD-42D3-82AB-597286A270C5
(†) The device ID can be obtained from running
(†)设备ID可以从运行中获得
xcrun simctl list
This will reset the simulator (equivalent to iOS Simulator > Reset Contents and Settings...
menu item).
这将重置模拟器(相当于iOS模拟器>重置内容和设置...菜单项)。
With Xcode 6.0.1 (Build 6A317), there is either a bug or a change in behavior where when you uninstall an application, user defaults are not removed.
使用Xcode 6.0.1(Build 6A317),存在一个错误或行为更改,当您卸载应用程序时,不会删除用户默认值。
Usage: simctl [--noxpc] [--set <set path>] <subcommand> ... | help [subcommand]
Command line utility to control the iOS Simulator
For subcommands that require a <device> argument, you may specify a device UDID
or the special "booted" string which will cause simctl to pick a booted device.
If multiple devices are booted when the "booted" device is selected, simctl
will choose one of them.
Subcommands:
create Create a new device.
delete Delete a device.
erase Erase a device's contents and settings.
boot Boot a device.
shutdown Shutdown a device.
rename Rename a device.
getenv Print an environment variable from a running device.
openurl Open a URL in a device.
addphoto Add a photo to the photo library of a device.
install Install an app on a device.
uninstall Uninstall an app from a device.
launch Launch an application by identifier on a device.
spawn Spawn a process on a device.
list List available devices, device types, or runtimes.
notify_post Post a darwin notification on a device.
icloud_sync Trigger iCloud sync on a device.
help Prints the usage for a given subcommand.
#3
6
Reset all Content & Settings in a single command
- Quit iPhone Simulator
-
In Terminal, run:
在终端中,运行:
xcrun simctl erase all
退出iPhone模拟器
This will reset content and settings of all the simulators for the active version of Xcode (the one referenced by xcode-select -p
).
这将重置Xcode活动版本(xcode-select -p引用的那个)的所有模拟器的内容和设置。
#4
1
xcrun simctl uninstall simulatorIdentifier appBundleId
#1
26
With Xcode 6.1, to uninstall an app, use the following command:
使用Xcode 6.1,要卸载应用程序,请使用以下命令:
xcrun simctl uninstall booted com.example.apple-samplecode.UICatalog
where com.example.apple-samplecode.UICatalog
is the bundle identifier of the application you wish to uninstall.
其中com.example.apple-samplecode.UICatalog是您要卸载的应用程序的包标识符。
#2
13
One approach that we found for deleting user defaults is to delete all files in the ./data/Library/Preferences/*
in addition to deleting application and data directories.
我们发现删除用户默认值的一种方法是删除./data/Library/Preferences/*中的所有文件以及删除应用程序和数据目录。
However, in Xcode 6, the command xcrun
has new subcommand called simctl
that allows me to manage iOS Simulator including resetting the simulator, and installing the application.
但是,在Xcode 6中,命令xcrun有一个名为simctl的新子命令,它允许我管理iOS模拟器,包括重置模拟器和安装应用程序。
The solution that I came up with is to use the command
我想出的解决方案是使用该命令
xcrun simctl erase [device ID]
Example
If xcrun simctl list
(†) returns
如果xcrun simctl list(†)返回
9DDA0CFE-7CEC-40B6-A343-1EC01F282B22 (active, disconnected)
Watch: Apple Watch Series 2 - 42mm (88474523-163E-4021-B591-2AECBFA26997) (Shutdown)
Phone: iPhone 7 Plus (5785E680-15CD-42D3-82AB-597286A270C5) (Shutdown)
then run these 2 commands
然后运行这两个命令
xcrun simctl erase 88474523-163E-4021-B591-2AECBFA26997
xcrun simctl erase 5785E680-15CD-42D3-82AB-597286A270C5
(†) The device ID can be obtained from running
(†)设备ID可以从运行中获得
xcrun simctl list
This will reset the simulator (equivalent to iOS Simulator > Reset Contents and Settings...
menu item).
这将重置模拟器(相当于iOS模拟器>重置内容和设置...菜单项)。
With Xcode 6.0.1 (Build 6A317), there is either a bug or a change in behavior where when you uninstall an application, user defaults are not removed.
使用Xcode 6.0.1(Build 6A317),存在一个错误或行为更改,当您卸载应用程序时,不会删除用户默认值。
Usage: simctl [--noxpc] [--set <set path>] <subcommand> ... | help [subcommand]
Command line utility to control the iOS Simulator
For subcommands that require a <device> argument, you may specify a device UDID
or the special "booted" string which will cause simctl to pick a booted device.
If multiple devices are booted when the "booted" device is selected, simctl
will choose one of them.
Subcommands:
create Create a new device.
delete Delete a device.
erase Erase a device's contents and settings.
boot Boot a device.
shutdown Shutdown a device.
rename Rename a device.
getenv Print an environment variable from a running device.
openurl Open a URL in a device.
addphoto Add a photo to the photo library of a device.
install Install an app on a device.
uninstall Uninstall an app from a device.
launch Launch an application by identifier on a device.
spawn Spawn a process on a device.
list List available devices, device types, or runtimes.
notify_post Post a darwin notification on a device.
icloud_sync Trigger iCloud sync on a device.
help Prints the usage for a given subcommand.
#3
6
Reset all Content & Settings in a single command
- Quit iPhone Simulator
-
In Terminal, run:
在终端中,运行:
xcrun simctl erase all
退出iPhone模拟器
This will reset content and settings of all the simulators for the active version of Xcode (the one referenced by xcode-select -p
).
这将重置Xcode活动版本(xcode-select -p引用的那个)的所有模拟器的内容和设置。
#4
1
xcrun simctl uninstall simulatorIdentifier appBundleId