113 votes

Nettoyer le simulateur d'iPhone

Y a-t-il un moyen simple de nettoyer le répertoire où xcode déploie une application lors de la construction pour le simulateur d'iPhone ? J'ai une base de données sqlite qui est copiée dans le dossier Documents au démarrage si nécessaire. Le problème est que je pourrais changer mon schéma, mais la nouvelle base de données ne sera pas copiée, car une existe déjà.

Idéalement, à chaque fois que je construis, cela devrait supprimer les contenus précédents. Est-ce possible, ou dois-je le faire manuellement ?

0 votes

Est-ce que le simulateur prend en charge AppleScript?

0 votes

Oui, c'est le cas. J'ai écrit un AppleScript pour parcourir tous les simulateurs iOS pour chaque appareil et version d'OS et réinitialiser leurs Contenus et Paramètres : github.com/michaelpatzer/ResetAllSimulators

136voto

j7nn7k Points 5019

De Apples Dev Resources:

Pour réinitialiser les contenus et paramètres de l'utilisateur du simulateur à leur état d'usine et supprimer les applications que vous avez installées, choisissez Appareil > Effacer tout le contenu et les réglages.

(Sur les anciennes versions : Simulateur d'iPhone > Réinitialiser le contenu et les réglages.)

3 votes

Celui-ci ne semble pas nettoyer le SQLite

1 votes

Cela ne vide pas le cache du navigateur par exemple

2 votes

Maintenant, ce paramètre se trouve dans Matériel > Réinitialiser le contenu et les réglages

92voto

PyjamaSam Points 7802

Le simulateur installe des applications dans :

"$HOME/Bibliothèque/Application Support/iPhone Simulator/User/Applications"

Veuillez également vérifier :

"$HOME/Bibliothèque/Développeur/CoreSimulator/Devices"

Les fichiers et répertoires GUID correspondent aux applications installées dans le simulateur.

Supprimez manuellement tous ces fichiers/répertoires pour supprimer toutes les applications du simulateur.

Je sais qu'il existe un moyen d'ajouter des scripts au processus de construction dans XCode.

De plus, il semble que XCode change le GUID qu'il utilise à chaque compilation (le répertoire où se trouve mon application change entre les compilations dans XCode), donc essayer de supprimer le même répertoire tout le temps ne fonctionnera pas. Si vous ne travaillez que sur une seule application à la fois, vider l'ensemble du répertoire serait une option.

2 votes

Assurez-vous de consulter la réponse de @idStar ci-dessous. Il contient des informations mises à jour concernant Lion/Xcode4 et un petit script sympa pour automatiser les tâches.

0 votes

J'étais en train de tester l'ajout/suppression d'abonnements au calendrier. Sur un appareil réel, vous pouvez supprimer un abonnement au calendrier dans Paramètres > Comptes, mais ce menu n'existe pas dans le simulateur iOS et je ne voulais pas réinitialiser tout le simulateur. J'ai donc fini par versionner localement mon dossier Device avec git et effectuer un git reset HEAD --hard && git clean -f pour supprimer un abonnement au calendrier après l'avoir ajouté.

22voto

jcb Points 1037

La façon dont je procède est simplement de cliquer et de maintenir enfoncé sur l'icône de mon application dans le simulateur, puis lorsque celui-ci commence à vaciller, cliquez sur le (x) noir et blanc. Un message apparaîtra vous demandant si vous voulez vraiment supprimer et vous cliquez simplement sur oui. La prochaine fois que vous construisez et déployez votre application, elle utilisera la nouvelle base de données sqlite sans encombre et vous n'aurez pas à fouiller dans le système de fichiers.

0 votes

Cela ne semble pas fonctionner - cela ne SUPPRIME VRAIMENT pas les données du simulateur?

1 votes

Ma faute - cela fonctionne parfaitement (confirmé en lisant le répertoire dans la réponse acceptée. J'avais juste oublié la conception peu conviviale de NSUserDefaults par Apple (les valeurs non définies ne sont pas signalées de manière cohérente)

0 votes

@quadelirus, Je pense que votre réponse est la plus appropriée dans cette situation.

12voto

idStar Points 3735

Après iOS 5 sur Mac OS X Lion, vous pouvez essayer :

  1. Créez un script appelé RemoveSimulatorApps.command qui contient : rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Applications/*"

  2. Enregistrez ce script dans un répertoire de votre PATH.

  3. Rendez le fichier exécutable, par exemple : chmod +x RemoveSimulatorApps.command

Hypothèses

  • Vous pouvez vouloir appeler ceci à partir de boutons de favoris du clavier, comme sur un clavier Logitech ou Microsoft avec touches programmables (d'où l'enregistrement en tant que fichier .command au lieu de par exemple, .sh)
  • Vous acceptez de tout supprimer dans le simulateur iOS (idéal si vous travaillez activement sur une seule application)
  • Toutes les notes des autres s'appliquent concernant le fait d'être une bonne application mise à jour etc. (personnellement, j'ai trouvé cela utile néanmoins car j'ai des commutateurs de mode de développement qui rechargent une base de données dans un état spécifique sur lequel j'essayais de mettre en œuvre une robustesse/une gestion des erreurs cohérentes)

1 votes

Celle-ci fonctionne parfaitement, n'oubliez pas d'ajouter votre bonne version IOS dans le chemin :)

1 votes

Est-ce que cela aurait du sens d'ajouter ~ plutôt que le chemin absolu?

8voto

ShoeLace Points 1283

Cela peut être excessif mais...

vous pouvez également utiliser le menu et "Réinitialiser le contenu et les paramètres..."

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X