web-dev-qa-db-fra.com

Nettoyer le simulateur iPhone

Existe-t-il un moyen simple de nettoyer le répertoire dans lequel xcode déploie une application lors de la création du simulateur 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 peux changer de schéma, mais la nouvelle base de données ne sera pas copiée, car il en existe déjà une.

Idéalement, chaque fois que je construirais, cela nuancerait le contenu précédent. Est-ce possible ou dois-je le faire manuellement?

104
Travis Jensen

Le simulateur installe les applications dans:

"$HOME/Library/Application Support/iPhone Simulator/User/Applications"

Vérifiez également:

"$HOME/Library/Developer/CoreSimulator/Devices"

Les fichiers et les répertoires GUID correspondent aux applications installées du 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 génération dans XCode.

En outre, il semble que XCode modifie le GUID utilise chaque construction (le répertoire dans lequel mon application est modifiée) entre les constructions dans XCode), donc essayer de supprimer le même répertoire tout le temps ne fonctionnera pas Si vous ne travaillez que sur une application à la fois, effacer tout le répertoire sera une option.

86
PyjamaSam

À partir de Apple Dev Resources:

Pour définir le contenu et les paramètres utilisateur du simulateur sur leur état d'origine et supprimer les applications que vous avez installées, choisissez iPhone Simulator> Réinitialiser le contenu et les paramètres .

Cela ressemble à:

iOS Reset

130
j7nn7k

Pour ce faire, cliquez simplement sur l'icône de mon application dans le simulateur et maintenez-la enfoncée; ensuite, lorsqu'elle commence à bouger, cliquez sur le noir et blanc (x). Un message apparaîtra vous demandant si vous voulez vraiment supprimer et vous cliquez simplement sur oui. La prochaine fois que vous construirez et déployerez votre application, elle utilisera la nouvelle base de données sqlite sans accroc et vous n’aurez pas à vous perdre dans le système de fichiers.

21
John

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

  1. Créez un script appelé RemoveSimulatorApps.command cela contient:
     rm -rf "$ HOME/Bibliothèque/Application Support/iPhone Simulator/5.0/Applications /*"
    
  2. Enregistrez ce script dans un répertoire de votre PATH.
  3. Rendre le fichier exécutable, tel que:
     chmod + x RemoveSimulatorApps.command

Hypothèses

  • Vous voudrez peut-être appeler cela à partir des boutons de favoris du clavier, tels que ceux d'un clavier Logitech ou Microsoft avec des touches programmables (par conséquent, enregistrez-le en tant que fichier .command au lieu de, par exemple .sh).
  • Vous êtes prêt à tout détruire dans le simulateur iOS (idéal si vous travaillez simplement sur une application)
  • Toutes les notes des autres s'appliquent au fait d'être une bonne application pouvant être mise à niveau, etc.
12
idStar

c'est peut-être exagéré mais ..

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

8
ShoeLace

Ce que vous essayez réellement de faire est d'effacer votre base de données, si vous avez modifié le schéma. Une façon de le faire, et cela vous rendrait plus heureux à long terme lorsque vous commencez à envoyer les versions 2.0, 3.0, etc. de votre application, consiste à vérifier la version de votre table sqlite. Si elle a changé, supprimez la ancien fichier et utilisez celui de votre lot.

Trouver un moyen de nettoyer le simulateur n'aidera pas le problème concret du nettoyage de l'iPhone d'un client lorsque vous expédiez une nouvelle version avec un nouveau schéma.

Pour des points supplémentaires, après avoir déterminé que vous avez rencontré un ancien schéma, vous pouvez copier la nouvelle base de données sans détruire l’ancien, et charger toutes les données intéressantes hors de l’ancienne base de données dans le nouveau. Ensuite, supprimez l'ancienne base de données. De cette façon, vous pouvez conserver les ajouts de votre utilisateur à la base de données.

7
mahboudz

pour Xcode> = 6

xcrun simctl list | grep -oh '[A-Z0-9]\{8\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{12\}' | xargs -n1 xcrun simctl erase
6
jia tian

A partir de Xcode 6, vous pouvez le faire depuis la ligne de commande avec: xcrun simctl erase

En outre, l'application iOS Simulator (version Xcode 6 et versions antérieures) comporte un élément de menu appelé "Réinitialiser le contenu et les paramètres" qui peut être utilisé pour effacer le périphérique actuellement démarré.

Cela fonctionne avec Xcode 6:

xcrun simctl list | grep -oh '[A-Z0-9]\{8\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{12\}' | xargs -I{} xcrun simctl erase {}

Pour .bash_profile

alias cleansim="xcrun simctl list | grep -oh '[A-Z0-9]\{8\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{4\}-[A-Z0-9]\{12\}' | xargs -I{} xcrun simctl erase {}"
5
Thomas T

Si vous utilisez Xcode 9 -> Barre de menu -> Hardware -> Effacer tout le contenu et tous les paramètres

Xcode -> Hardware -> Erase All Content and Settings

4
Harald

À partir de Xcode 6:

xcrun simctl erase <sim udid> <- réinitialise le simulateur.

3
TinyTimZamboni

Dans XCode, allez à l’option de menu Fenêtre, sélectionnez Périphériques, puis supprimez ceux dont vous n’avez plus besoin.

1
Simon

Clear Xcode Cache;

Commande + Option + Maj + K

Commande + Maj + K

(Utilisez les deux car ils ont des fonctionnalités différentes)

Effacer le contenu des données dérivées;

Barre de menus -> Fenêtre -> Organiseur -> Projets -> Sélectionnez votre projet

Le volet de droite affiche le nom du dossier et le bouton de suppression situé à droite vous permet de supprimer tout le contenu des données dérivées.

Effacer le cache du simulateur;

Barre de menus -> Simulateur iOS -> Réinitialiser le contenu et les paramètres

1
Huseyin

Comme je l'expliquais dans un commentaire sous le réponse validée :

Je testais l'ajout et la suppression des 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 iOS Simulator et je ne voulais pas réinitialiser le simulateur entier.

Je me suis donc retrouvé localement versionnant mon dossier Device avec git et exécutez les commandes suivantes pour supprimer un abonnement au calendrier après avoir terminé. l'a ajouté:

$ git reset HEAD --hard
$ git clean -f

Les étapes sont donc les suivantes:

  1. Installez votre application sur le simulateur iOS et faites ce que vous devez faire.
  2. Identifiez votre appareil dans ~/Library/Developer/CoreSimulator/Devices/ et faites un cd, puis git init pour créer un dépôt git
  3. Une fois que vous voulez sauvegarder l’état, exécutez git commit -a "Message"
  4. Faites ce qui change les paramètres (ex: ajouter un abonnement au calendrier) et effectuez vos tests.
  5. Arrêtez le simulateur
  6. Faire git reset --hard HEAD
  7. Démarrer le simulateur, toutes les modifications effectuées après git commit sont partis.
1
Thibault D.

Pour Xcode <= 5

J'ai ajouté ce qui suit à mon ~/.bash_profile

alias cleansim='rm -r ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/*'

Il ne fait que supprimer toutes les applications de la sim.

0
wfbarksdale