Membersihkan simulator iPhone

107

Apakah ada cara mudah untuk membersihkan direktori tempat xcode menyebarkan aplikasi saat membuat untuk simulator iPhone? Saya memiliki database sqlite yang akan disalin ke folder Dokumen saat startup jika perlu. Masalahnya adalah saya mungkin mengubah skema saya, tetapi database baru tidak akan disalin, karena sudah ada.

Idealnya, setiap saya membangun, itu akan menghancurkan konten sebelumnya. Apakah ini mungkin, atau apakah saya harus melakukannya secara manual?

Travis Jensen
sumber
Apakah simulator mendukung AppleScript?
Rog
Ya, itu benar. Saya telah menulis AppleScript untuk mengulangi semua simulator iOS untuk setiap perangkat dan versi OS dan mengatur ulang Isi & Pengaturannya: github.com/michaelpatzer/ResetAllSimulators
mpatzer

Jawaban:

91

Simulator memasang aplikasi ke:

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

Periksa juga:

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

File GUID dan direktori cocok dengan aplikasi yang diinstal simulator.

Hapus semua file / direktori itu secara manual untuk menghapus semua aplikasi dari simulator.

Saya tahu ada beberapa cara untuk menambahkan skrip ke proses pembangunan di XCode.

Juga terlihat seolah-olah XCode mengubah GUID yang digunakannya setiap build (direktori tempat aplikasi saya berada berubah di antara build di XCode), jadi mencoba menghapus direktori yang sama sepanjang waktu tidak akan berhasil. Jika Anda hanya mengerjakan satu aplikasi dalam satu waktu, maka menghapus seluruh direktori akan menjadi pilihan.

PyjamaSam
sumber
2
Pastikan untuk melihat jawaban @ idStar di bawah. Ini telah memperbarui informasi mengenai Lion / Xcode4 dan skrip kecil yang bagus untuk membantu mengotomatiskan berbagai hal.
PyjamaSam
Saya sedang menguji menambah / menghapus langganan kalender. Di perangkat nyata, Anda dapat menghapus langganan kalender di Pengaturan> Akun tetapi menu ini tidak ada di Simulator iOS dan saya tidak ingin mengatur ulang seluruh simulator. Jadi saya akhirnya membuat versi lokal folder Perangkat saya dengan git dan melakukan git reset HEAD --hard && git clean -funtuk menghapus langganan kalender setelah saya menambahkannya.
Thibault D.
132

Dari Apple Dev Resources:

Untuk mengatur konten pengguna dan pengaturan simulator ke status pabrik mereka dan menghapus aplikasi yang telah Anda instal, pilih iPhone Simulator> Atur Ulang Konten dan Pengaturan .

Ini menyerupai:

Atur Ulang iOS

j7nn7k
sumber
3
Yang satu ini tampaknya tidak membersihkan SQLite
Asped
1
ini tidak menghapus cache browser misalnya
Mau
1
Sekarang pengaturan ini berada diHardware > Reset Content and Settings
Haseeb Eqx
22

Cara saya melakukan ini adalah dengan mengklik dan menahan ikon untuk aplikasi saya di simulator - lalu ketika mulai bergoyang, klik hitam dan putih (x). Sebuah pesan akan muncul menanyakan apakah Anda benar-benar ingin menghapus dan Anda cukup mengklik ya. Lain kali Anda membangun dan menerapkan aplikasi Anda, itu akan menggunakan sqlite db baru tanpa hambatan dan Anda tidak perlu repot-repot di sistem file.

John
sumber
Ini sepertinya tidak berfungsi - apakah SEBENARNYA tidak menghapus data dari simulator?
Adam
1
Kesalahan saya - ini berfungsi dengan baik (dikonfirmasi dengan membaca direktori di jawaban yang diterima. Saya baru saja lupa desain NSUserDefaults Apple yang tidak ramah pengguna (nilai yang tidak disetel tidak dilaporkan dengan cara apa pun yang masuk akal)
Adam
@quadelirus, saya pikir jawaban Anda adalah yang paling tepat dalam situasi ini.
datnt
Inilah yang sebenarnya saya lakukan, tetapi saya tidak yakin bagaimana cara menutup aplikasi yang sudah terbuka di simulator. Sampai saya tidak menutup aplikasi, saya tidak dapat mengontrol simulator.
Wanna Coffee
1
@WannaCoffee Lihat stackoverflow.com/questions/18519799/…
John
12

Setelah iOS 5 di Mac OS X Lion, Anda dapat mencoba:

  1. Buat skrip bernama RemoveSimulatorApps.commandyang berisi:
    rm -rf "$ HOME / Library / Application Support / iPhone Simulator / 5.0 / Applications / *"
    
  2. Simpan skrip ini ke direktori di PATH.
  3. Jadikan file dapat dieksekusi, seperti:
    chmod + x RemoveSimulatorApps.command

Asumsi

  • Anda mungkin ingin menjalankan ini dari tombol favorit keyboard, seperti pada keyboard Logitech atau Microsoft dengan tombol yang dapat diprogram (karenanya, menyimpannya sebagai file .command alih-alih berkata, .sh)
  • Anda baik-baik saja dengan membuang semua yang ada di simulator iOS (ideal jika Anda hanya secara aktif mengerjakan satu aplikasi)
  • Semua catatan dari orang lain berlaku tentang menjadi aplikasi yang dapat diupgrade yang baik, dll. (Saya pribadi menemukan ini berguna b / c Saya memiliki sakelar mode pengembangan yang memuat ulang database dalam keadaan tertentu. Saya mencoba melakukan penanganan ketahanan / kesalahan yang konsisten)
idStar
sumber
1
Yang ini bekerja dengan sempurna, ingatlah untuk menambahkan versi iOS kanan Anda ke jalur :)
Mulai
1
Apakah masuk akal untuk menambahkan ~ daripada path absolut?
Nikita Leonov
8

itu mungkin berlebihan tapi ..

Anda juga dapat menggunakan menu dan 'Reset Konten dan Pengaturan ...'

Tali sepatu
sumber
7

Apa yang sebenarnya Anda coba lakukan adalah membersihkan database Anda, jika Anda telah mengubah skema. Salah satu cara untuk melakukan ini, dan itu akan membuat Anda lebih bahagia dalam jangka panjang ketika Anda mulai mengirim versi 2.0, 3.0, dll. Dari aplikasi Anda, adalah dengan memeriksa versi tabel sqlite Anda, dan jika sudah berubah, maka buang file lama dan gunakan yang ada di bundel Anda.

Menemukan cara untuk membersihkan Simulator tidak akan membantu masalah dunia nyata tentang cara membersihkan iPhone pelanggan saat Anda mengirimkan versi baru dengan skema baru.

Untuk poin tambahan, setelah menentukan bahwa Anda telah menemukan skema lama, Anda mungkin ingin menyalin database baru tanpa merusak database lama, dan memuat data yang menarik dari database lama, ke database baru. Kemudian hancurkan database lama. Dengan cara itu Anda bisa mempertahankan penambahan pengguna Anda ke database.

mahboudz.dll
sumber
Secara umum, saya setuju dengan Anda ketika Anda berbicara tentang peningkatan rilis, tetapi di tengah pengembangan versi tertentu, ini jauh lebih banyak daripada yang diperlukan. Skema database dapat berubah per build, dan perlu menulis kode konversi untuk setiap build adalah salah.
Travis Jensen
7

untuk 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
jia tian
sumber
6

Jika Anda menggunakan Xcode 9 -> Menubar -> Hardware -> Erase All Content and Settings

Xcode -> Hardware -> Hapus Semua Konten dan Pengaturan

Harald
sumber
5

Pada Xcode 6, Anda dapat melakukan ini dari baris perintah dengan: xcrun simctl erase

Selain itu, aplikasi iOS Simulator (baik versi Xcode 6 dan versi yang lebih lama) memiliki item menu yang disebut "Setel Ulang Konten dan Pengaturan" yang dapat digunakan untuk menghapus perangkat yang saat ini di-boot.

Jeremy Huddleston Sequoia
sumber
tetapi dapat dijalankan pada setiap build secara otomatis? misalnya untuk tes?
Daniel Gomez Rico
Dengan asumsi Anda melakukan pengujian menggunakan skrip, Anda tentu dapat menambahkan 'xcrun simctl erase <UDID>' ke skrip tersebut jika sesuai ...
Jeremy Huddleston Sequoia
Ya, itulah yang saya katakan.
Jeremy Huddleston Sequoia
5

Ini bekerja dengan 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 {}

Untuk .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 {}"
Thomas T
sumber
3

Sejak Xcode 6:

xcrun simctl erase <sim udid> <- menyetel ulang simulator.

TinyTimZamboni
sumber
1

Hapus Cache Xcode;

Command + Option + Shift + K.

Command + Shift + K.

(Gunakan keduanya karena memiliki fungsi yang berbeda)

Hapus konten Data Berasal;

Menu Bar -> Window -> Organizer -> Projects -> Pilih Proyek Anda

Pane Kanan menunjukkan nama folder dan juga tombol hapus di sisi kanan memungkinkan Anda untuk menghapus semua konten data turunan.

Hapus Cache Simulator;

Bilah Menu -> Simulator iOS -> Atur Ulang Isi Dan Pengaturan

Huseyin
sumber
1

Saat saya menjelaskan dalam komentar di bawah jawaban yang divalidasi :

Saya sedang menguji menambah dan menghapus langganan kalender. Di perangkat nyata, Anda dapat menghapus langganan kalender di Pengaturan , Akun tetapi menu ini tidak ada di Simulator iOS dan saya tidak ingin mengatur ulang seluruh simulator.

Jadi saya akhirnya membuat versi lokal folder Perangkat saya dengan git dan melakukan perintah berikut untuk menghapus langganan kalender setelah saya menambahkannya:

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

Jadi langkah-langkahnya adalah:

  1. Instal aplikasi Anda di iOS Simulator dan lakukan apa yang harus Anda lakukan
  2. Identifikasi perangkat Anda ~/Library/Developer/CoreSimulator/Devices/dan lakukan cduntuk itu, lalu git inituntuk membuat repositori git
  3. Setelah Anda ingin menyimpan negara bagian, lakukan git commit -a "Message"
  4. Lakukan apa pun yang mengubah pengaturan (mis: menambahkan langganan kalender) dan lakukan pengujian Anda
  5. Matikan simulator
  6. Melakukan git reset --hard HEAD
  7. Mulai simulator, semua perubahan yang dilakukan setelah git commithilang.
Thibault D.
sumber
1

Di XCode, pergi ke opsi menu Window, pilih Perangkat dan kemudian Anda dapat menghapus yang tidak lagi Anda butuhkan.

Simon
sumber
0

Untuk Xcode <= 5

Saya menambahkan yang berikut ini ke saya ~/.bash_profile

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

Itu hanya nuklir semua aplikasi di sim.

wfbarksdale.dll
sumber
1
Ini tidak lagi berlaku dengan Xcode 6 ke atas.
Jeremy Huddleston Sequoia