Esiste un'opzione per ripristinare i contenuti e le impostazioni di tutti i simulatori? In un singolo evento o un singolo comando tramite riga di comando?Ripristina i contenuti e le impostazioni tutti i simulatori iOS
risposta
vi presento,
The Definitive iOS Simulator Reset Script (link)
Sulla base di Oded Regev's code da this SO question (che si basava su Jacob Rus's fine "menu_click" code)
Per impostare il contenuto utente e le impostazioni del simulatore allo stato di fabbrica e rimuovere le applicazioni installate, selezionare iPhone Simulator> Reimposta contenuto e impostazioni.
questo azzera solo uno. non me lo ha chiesto :) ha chiesto di resettare multipli contemporaneamente! –
Quindi non può farlo direttamente. si potrebbe scrivere uno script bash/apple per modificare direttamente il filesystem .... tutti i sim sono sotto ~/Libreria/Application Support/iPhone Simulator /% VERSION% –
Sì, ho completamente letto male la domanda: - /. – memmons
È possibile chiamare questo comando:
rm -rf ~/Library/Application Support/iPhone Simulator
Basta andare su ~/Library/Application Support/iPhone Simulator
e cancellare tutti i contenuti da lì. I metodi sopra non funzionano su iOS 7, quindi questo sembrava funzionare per me.
Ho scritto uno script che ripristinerà le impostazioni & di tutte le versioni e i dispositivi per il simulatore iOS. Prende i nomi dei dispositivi e i numeri di versione dal menu, quindi includerà tutti i nuovi dispositivi o versioni iOS per cui Apple rilascia i simulatori.
È facile da eseguire manualmente o da utilizzare in un build-script. Suggerirei di aggiungerlo come script di esecuzione pre-azione prima della compilazione.
È basato pesantemente sullo script di Stian sopra, ma non diventa obsoleto con le nuove versioni di iOS ed elimina la finestra di dialogo (meglio per gli script di build di automazione).
C'è uno strumento xctool - https://github.com/facebook/xctool che è la sostituzione di xcodebuild. Permette di creare applicazioni dalla riga di comando e di eseguire test per questo. Oltre all'esecuzione di test, è possibile fornire argomenti come -freshSimulator e -freshInstall che reimpostano il contenuto per il simulatore di destinazione prima dell'esecuzione dei test. Ciò semplifica molto il ripristino del simulatore, poiché si evitano varie magie con script di bash ecc. Tutto incapsulato all'interno dello strumento.
Con Xcode 6, è possibile utilizzare l'utilità della riga di comando simctl:
xcrun simctl erase <device UDID>
Con Xcode 7, è possibile cancellare tutti in una volta con:
xcrun simctl erase all
Per chiunque stia leggendo queste risposte, dirò che questa è sicuramente una scelta migliore rispetto al semplice whacking della cartella di iPhone Simulator per il supporto delle applicazioni con rm -rf. –
Sulla base della risposta da Jeremy Huddleston Sequoia Ho scritto uno script di shell che resetterà tutti i simulatori.
Per Xcode 7 è possibile utilizzare:
#!/bin/sh
instruments -s devices \
| grep "(\d[.0-9]\+) \[[0-9A-F]\{8\}-[0-9A-F]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{12\}\]" \
| grep -o "[0-9A-F]\{8\}-[0-9A-F]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{12\}" \
| while read -r line ; do
echo "Reseting Simulator with UDID: $line"
xcrun simctl erase $line
done
Per le versioni precedenti utilizzano:
#!/bin/sh
instruments -s devices \
| grep Simulator \
| grep -o "[0-9A-F]\{8\}-[0-9A-F]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{12\}" \
| while read -r line ; do
echo "Reseting Simulator with UDID: $line"
xcrun simctl erase $line
done
Hai dimenticato un "" carattere alla fine della tua espressione regolare, non posso modificare per un personaggio, quindi sto solo commentando :) –
Grazie per aver condiviso questo Daniel, funziona benissimo – Ruenzuo
Ciao Daniel. Funzionava perfettamente, ma ha smesso di funzionare per xcode7 Penso che sia necessario modificare la regex – eertl
Ispirato alla risposta da Daniel legno, sono arrivato fino a questo.
Risolve il problema di cosa fare con un simulatore di corsa. Il nostro ambiente CI lascia il simulatore in esecuzione dopo l'esecuzione dei test, e questo si sta facendo sempre più rovinoso nel tempo.
Il rilevamento guid non è accurato, ma penso che il compromesso sulla leggibilità sia utile.
#!/bin/bash
xcrun simctl list | grep Booted | grep -e "[0-9A-F\-]\{36\}" -o | xargs xcrun simctl shutdown
xcrun simctl erase all
testato con il XCode 7.
fantastico, non sapevo che esistesse un argomento xcrun 'shutdown'. Grazie – JJacquet
Questo dovrebbe probabilmente essere la nuova risposta accettata. Ritiriamo lo script predefinito Reset iOS Simulator;) –
Con l'ultima versione di strumenti da riga di comando Xcode è possibile chiamare xcrun simctl erase all
Assicurarsi di lasciare il sim ogni volta che si chiama questa funzione o ti ottenere un errore che indica An error was encountered processing the command (domain=com.apple.CoreSimulator.SimError, code=159): Unable to erase contents and settings in current state: Booted
Funziona su entrambi gli Xcode 6 e 7 ed è molto più semplice di qualsiasi script di terze parti. – leolobato
Esegui 'killall" Simulatore "' prima 'xcrun simctl cancella tutto ' –
è possibile eseguire questo comando xcrun simctl erase all
In realtà, questo fornisce la risposta esatta alla domanda. –
Non intendi "Definitivo"? – trojanfoe
Grazie, è davvero molto utile. Ma sfortunatamente non funziona per me. (XCode 4.6.1) –
Yossi, utilizzare i problemi di Github per documentare bug e richiedere correzioni. Sono più che felice di aiutarti, ma ti preghiamo di utilizzare Github Issues per ulteriori comunicazioni. –