2014-10-16 12 views
14

Ho un'automazione in esecuzione in iOS Simulator che devo rimuovere prima di un'altra corsa. Come rimuovo l'app da iOS Simulator dalla riga di comando?Come si rimuove l'app da iOS 8 Simulator dalla riga di comando?

Per ogni directory dispositivo simulatore (che si trova a ~/Library/Developer/CoreSimulator/Devices/*), ho cercato di eliminare ./data/Containers/Bundle/Application/ e ./data/Containers/Data/Application/.

Anche quando ho provato a eliminare l'app premendo a lungo l'app nel simulatore (l'app diventa jiggly) e facendo clic sul pulsante X, le impostazioni predefinite dell'utente non venivano cancellate. Voglio che lo stato dell'app sia pulito al 100%.

Ho trovato una buona soluzione per risolvere questo problema.

risposta

11

Un approccio che abbiamo trovato per l'eliminazione dei valori predefiniti dell'utente è quello di eliminare tutti i file nello ./data/Library/Preferences/* oltre all'eliminazione delle directory di applicazioni e dati.

Tuttavia, in Xcode 6, il comando xcrun ha un nuovo sottocomando chiamato simctl che mi consente di gestire iOS Simulator incluso il ripristino del simulatore e l'installazione dell'applicazione.

La soluzione che mi è venuta è quella di utilizzare il comando

xcrun simctl erase [device ID] 

L'ID del dispositivo sono disponibili presso l'esecuzione

xcrun simctl list 

Questo resetta il simulatore (equivalente a iOS Simulator > Reset Contents and Settings... voce di menu) .

Con Xcode 6.0.1 (Build 6A317), è presente un bug o una modifica nel comportamento in cui quando si disinstalla un'applicazione, le impostazioni predefinite dell'utente non vengono rimosse.

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. 
+0

Se tutto ciò che si vuole fare è eliminare la singola app, è necessario utilizzare la disinstallazione anziché cancellare. –

+1

In Xcode 6.0.1, anche se si utilizza il comando uninstall, i valori predefiniti dell'utente rimangono intatti (è un bug). Ecco perché suggerisco di usare cancella. – Frank

+0

Ah, sì. Buon punto, tuttavia non è un problema con Xcode 6.0.1 ma con iOS 8.0. Se si utilizza "cancella" su un dispositivo simulato 7.x, funzionerà correttamente. –

24

con Xcode 6.1, per disinstallare un'applicazione, utilizzare il seguente comando:

xcrun simctl uninstall booted com.example.apple-samplecode.UICatalog 

dove com.example.apple-samplecode.UICatalog è l'identificativo fascio dell'applicazione che si desidera disinstallare.

+0

Questa è un'implementazione molto più pulita, specialmente con l'inclusione di 'booted' –

+0

C'è un modo per fallire silenziosamente se non c'è un simulatore di avvio? – tfe

+1

Suppongo che potrei semplicemente fare 'xcrun simctl uninstall booted com.example.apple-samplecode.UICatalog || true'. – tfe

6

Ripristina tutto il Contenuto & impostazioni in un unico comando

  1. Uscire da iPhone Simulator
  2. In Terminal, gestito:

    xcrun simctl erase all 
    

Questo ripristinerà i contenuti e le impostazioni di tutti i simulatori per la versione attiva di Xcode (quello indicato da xcode-select -p).

1
xcrun simctl uninstall simulatorIdentifier appBundleId 
Problemi correlati