J'ai une automatisation en cours d'exécution dans le simulateur iOS que je dois supprimer avant une autre exécution. Comment supprimer l'application du simulateur iOS de la ligne de commande?
Pour chaque répertoire de périphérique de simulateur (situé à ~/Library/Developer/CoreSimulator/Devices/*
), J'ai essayé de supprimer ./data/Containers/Bundle/Application/
et ./data/Containers/Data/Application/
.
Même lorsque j'ai essayé de supprimer l'application en appuyant longuement sur l'application dans le simulateur (l'application devient instable) et en cliquant sur le bouton X, les valeurs par défaut de l'utilisateur n'étaient pas effacées. Je veux que l'état de l'application soit 100% propre.
J'ai trouvé une bonne solution pour résoudre ce problème.
Une approche que nous avons trouvée pour supprimer les valeurs par défaut des utilisateurs consiste à supprimer tous les fichiers dans le ./data/Library/Preferences/*
en plus de supprimer les répertoires d'application et de données.
Cependant, dans Xcode 6, la commande xcrun
a une nouvelle sous-commande appelée simctl
qui me permet de gérer iOS Simulator, y compris la réinitialisation du simulateur et l'installation de l'application.
La solution que j'ai trouvée est d'utiliser la commande
xcrun simctl erase [device ID]
Exemple
Si xcrun simctl list
(†) renvoie
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)
puis exécutez ces 2 commandes
xcrun simctl erase 88474523-163E-4021-B591-2AECBFA26997
xcrun simctl erase 5785E680-15CD-42D3-82AB-597286A270C5
(†) L'ID de l'appareil peut être obtenu en exécutant
xcrun simctl list
Cela réinitialisera le simulateur (équivalent à iOS Simulator > Reset Contents and Settings...
élément du menu).
Avec Xcode 6.0.1 (Build 6A317), il y a un bogue ou un changement de comportement où lorsque vous désinstallez une application, les valeurs par défaut de l'utilisateur ne sont pas supprimées.
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.
Avec Xcode 6.1, pour désinstaller une application, utilisez la commande suivante:
xcrun simctl uninstall booted com.example.Apple-samplecode.UICatalog
où com.example.Apple-samplecode.UICatalog
est l'identifiant du bundle de l'application que vous souhaitez désinstaller.
Dans Terminal, exécutez:
xcrun simctl erase all
Cela réinitialisera le contenu et les paramètres de tous les simulateurs de la version active de Xcode (celle référencée par xcode-select -p
).
xcrun simctl uninstall simulatorIdentifier appBundleId