Nettoyer le simulateur d’iPhone

Existe-t-il un moyen simple de nettoyer le répertoire où xcode déploie une application lors de la création du simulateur iPhone? J’ai une firebase database 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 firebase database ne sera pas copiée, car il en existe déjà un.

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

Le simulateur installe des applications dans:

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

Vérifiez également:

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

Les fichiers et 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’append des scripts au processus de génération dans XCode.

En outre, il semble que XCode modifie le GUID qu’il utilise pour chaque construction (le répertoire dans lequel mon application se situe entre les versions de XCode). 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 serait une option.

À partir des ressources Dev Dev:

Pour définir le contenu utilisateur et les parameters du simulateur à leur état d’origine et supprimer les applications que vous avez installées, choisissez iPhone Simulator> Réinitialiser le contenu et les parameters .

Cela ressemble à:

Réinitialisation iOS

La façon dont je le fais est de simplement cliquer sur l’icône de mon application dans le simulateur, puis de cliquer sur le noir et le 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éploierez votre application, elle utilisera sans problème la nouvelle firebase database sqlite db et vous n’avez pas à vous déplacer dans le système de fichiers.

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 / 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 invoquer ceci à partir d’un clavier de boutons favoris, par exemple sur un clavier Logitech ou Microsoft avec des touches programmables (par conséquent, en l’enregistrant en tant que fichier .command au lieu de .sh)
  • Vous êtes d’accord pour tout exploser dans le simulateur iOS (idéal si vous travaillez uniquement sur une application)
  • Toutes les notes des autres s’appliquent au fait d’être une bonne application évolutive, etc. (J’ai personnellement trouvé cela utile, mais j’ai des commutateurs de mode de développement qui rechargent une firebase database dans un état spécifique.

il peut être excessif mais ..

vous pouvez également utiliser le menu et “Réinitialiser le contenu et les parameters …”

Ce que vous essayez vraiment de faire, c’est d’effacer votre firebase database si vous avez modifié le schéma. Une façon de faire cela, et cela vous rendrait plus heureux à long terme lorsque vous commenceriez à expédier la version 2.0, 3.0, etc. de votre application, est de vérifier la version de votre table sqlite, et si elle a changé, ancien fichier et utilisez celui de votre paquet.

Trouver un moyen de nettoyer le simulateur n’aidera pas le problème réel de savoir comment nettoyer 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 firebase database sans détruire l’ancienne et charger les données intéressantes de l’ancienne firebase database dans la nouvelle. Puis évacuez l’ancienne firebase database. De cette façon, vous pouvez préserver les ajouts de votre utilisateur à la firebase database.

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 {}" 

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 

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

En outre, l’application iOS Simulator (à la fois la version Xcode 6 et les versions antérieures) comporte un élément de menu appelé “Réinitialiser le contenu et les parameters” qui peut être utilisé pour effacer le périphérique actuellement démarré.

À partir de Xcode 6:

xcrun simctl erase <- réinitialise le simulateur.

Effacer le cache Xcode

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 droit affiche le nom du dossier et le bouton Supprimer à droite vous permet de supprimer tous les contenus de données dérivés.

Effacer le cache du simulateur;

Barre de menus -> Simulateur iOS -> Réinitialiser le contenu et les parameters

Comme je l’expliquais dans un commentaire sous la réponse validée :

Je testais l’ajout et la suppression d’abonnements au calendrier. Sur un appareil réel, vous pouvez supprimer un abonnement à l’agenda dans Paramètres , Comptes, mais ce menu n’existe pas dans iOS Simulator et je ne voulais pas réinitialiser l’ensemble du simulateur.

J’ai donc fini par localiser localement mon dossier Device avec git et exécuter les commandes suivantes pour supprimer un abonnement à un calendrier après l’avoir 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 repository git
  3. Une fois que vous voulez enregistrer l’état, effectuez git commit -a "Message"
  4. Faites tout ce qui change les parameters (ex: append un abonnement au calendrier) et effectuez vos tests
  5. Arrêter le simulateur
  6. Do git reset --hard HEAD
  7. Démarrez le simulateur, toutes les modifications effectuées après la git commit ont disparu.

Dans XCode, accédez à l’option de menu Fenêtre, sélectionnez Périphériques et vous pouvez simplement supprimer ceux dont vous n’avez plus besoin.

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 suffit de nuke toutes les applications sur la sim.