İPhone simülatörünü temizleme


107

İPhone simülatörü için geliştirme yaparken xcode'un bir uygulamayı dağıttığı dizini temizlemenin basit bir yolu var mı? Gerekirse başlangıçta Documents klasörüne kopyalanan bir sqlite veritabanım var. Sorun şu ki, şemamı değiştirebilirim, ancak yeni veritabanı zaten mevcut olduğu için kopyalanmayacak.

İdeal olarak, her inşa ettiğimde önceki içerikleri bombalayacaktı. Bu mümkün mü yoksa manuel olarak yapmam mı gerekiyor?


Simülatör AppleScript'i destekliyor mu?
Rog

Evet öyle. Her cihaz ve işletim sistemi sürümü için tüm iOS simülatörlerini yinelemek ve İçeriklerini ve Ayarlarını sıfırlamak için bir AppleScript yazdım: github.com/michaelpatzer/ResetAllSimulators
mpatzer

Yanıtlar:


91

Simülatör, uygulamaları şuraya yükler:

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

Ayrıca şunları da kontrol edin:

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

GUID dosyaları ve dizinleri, simülatörün yüklü uygulamalarıyla eşleşir.

Simülatörden tüm uygulamaları kaldırmak için tüm bu dosyaları / dizinleri manuel olarak silin.

XCode'da derleme sürecine betik eklemenin bir yolu olduğunu biliyorum.

Ayrıca, XCode her yapıyı kullandığı GUID'yi değiştiriyor gibi görünüyor (uygulamamın bulunduğu dizin XCode'daki yapılar arasında değişir), bu nedenle aynı dizini silmeye çalışmak her zaman işe yaramaz. Aynı anda yalnızca bir uygulama üzerinde çalışıyorsanız, tüm dizini temizlemek bir seçenek olacaktır.


2
@ İdStar'ın aşağıdaki yanıtını kontrol ettiğinizden emin olun. Lion / Xcode4 ile ilgili bilgileri güncelledi ve işleri otomatikleştirmeye yardımcı olacak güzel bir küçük komut dosyası.
PyjamaSam

Takvim aboneliklerini eklemeyi / kaldırmayı test ediyordum. Gerçek bir cihazda, bir takvim aboneliğini Ayarlar> Hesaplar'dan kaldırabilirsiniz ancak bu menü iOS Simulator'da mevcut değil ve tüm simülatörü sıfırlamak istemedim. Bu yüzden, Cihaz klasörümün yerel versiyonunu git ile bitirdim ve git reset HEAD --hard && git clean -fekledikten sonra bir takvim aboneliğini kaldırmak için a gerçekleştirdim .
Thibault D.

132

Apples Dev Resources'tan:

Simülatörün kullanıcı içeriğini ve ayarlarını fabrika durumuna ayarlamak ve yüklediğiniz uygulamaları kaldırmak için iPhone Simulator> İçeriği ve Ayarları Sıfırla'yı seçin .

Bu şuna benzer:

iOS Sıfırlama


3
Bu,
SQLite'yi

1
bu, örneğin tarayıcının önbelleğini temizlemez
Mau

1
Şimdi bu ayarHardware > Reset Content and Settings
Haseeb Eqx

22

Bunu yapmamın yolu, simülatördeki uygulamamın simgesine tıklayıp basılı tutmaktır - sonra kıpırdatmaya başladığında siyah beyazı (x) tıklayın. Gerçekten silmek isteyip istemediğinizi soran bir mesaj açılır ve siz sadece evet'i tıklayın. Bir dahaki sefere uygulamanızı oluşturup devreye aldığınızda, yeni sqlite db'yi sorunsuz bir şekilde kullanacak ve dosya sisteminde dolaşmanıza gerek kalmayacak.


Bu işe yaramıyor - simülatörden GERÇEKTEN verileri silmiyor mu?
Adam

1
Benim hatam - bu iyi çalışıyor (kabul edilen cevaptaki dizini okuyarak onaylandı. Apple'ın kullanıcı dostu NSUserDefaults tasarımını unutmuştum (ayarlanmamış değerler herhangi bir mantıklı şekilde rapor edilmiyor)
Adam

@quadelirus, bu durumda cevabınızın en uygun olduğunu düşünüyorum.
tarih

Yaptığım tam olarak buydu, ancak simülatörde zaten açık olan uygulamayı nasıl kapatacağımdan emin değilim. Uygulamayı kapatmadığım sürece simülatörde kontrolü ele geçiremedim.
Wanna Kahve


12

Mac OS X Lion'da iOS 5'ten sonra şunları deneyebilirsiniz:

  1. Şunları RemoveSimulatorApps.commandiçeren bir komut dosyası oluşturun :
    rm -rf "$ HOME / Kitaplık / Uygulama Desteği / iPhone Simulator / 5.0 / Uygulamalar / *"
    
  2. Bu komut dosyasını PATH.
  3. Dosyayı aşağıdaki gibi yürütülebilir hale getirin:
    chmod + x RemoveSimulatorApps.command

Varsayımlar

  • Bunu programlanabilir tuşlara sahip Logitech veya Microsoft klavyesi gibi klavye sık kullanılan düğmelerinden çağırmak isteyebilirsiniz (bu nedenle, bunu .sh yerine bir .command dosyası olarak kaydetmek)
  • İOS simülatöründeki her şeyi havaya uçurmakta sorun yok (aktif olarak bir uygulama üzerinde çalışıyorsanız ideal)
  • Başkalarından gelen tüm notlar, iyi bir yükseltilebilir uygulama vb. Olmakla ilgilidir (kişisel olarak bunu faydalı buldum, ancak yine de bir veritabanını belirli bir durumda yeniden yükleyen geliştirme modu anahtarlarım var, bazı tutarlı sağlamlık / hata işleme yapmaya çalışıyorum)

1
Bu mükemmel çalışıyor, sadece doğru IOS versiyonunuzu yola eklemeyi unutmayın :)
2013

1
Mutlak yol yerine ~ eklemek mantıklı olur mu?
Nikita Leonov

8

aşırı olabilir ama ..

ayrıca menüyü ve 'İçeriği ve Ayarları Sıfırla ...' seçeneğini de kullanabilirsiniz.


7

Şemayı değiştirdiyseniz, gerçekten yapmaya çalıştığınız şey veritabanınızı temizlemektir. Bunu yapmanın bir yolu ve uygulamanızın 2.0, 3.0, vb. Sürümlerini göndermeye başladığınızda uzun vadede daha mutlu olmanızı sağlar, sqlite tablonuzun sürümünü kontrol etmek ve eğer değiştiyse, eski dosya ve paketinizdekini kullanın.

Simülatörü temizlemenin bir yolunu bulmak, yeni bir şemayla yeni bir sürüm gönderdiğinizde müşterinin iPhone'unun nasıl temizleneceğine ilişkin gerçek dünya sorununa yardımcı olmaz.

Ekstra puanlar için, eski bir şemayla karşılaştığınızı belirledikten sonra, eski veritabanını yok etmeden yeni veritabanını kopyalamak ve eski veritabanından ilginç verileri yenisine yüklemek isteyebilirsiniz. Sonra eski veritabanını ortadan kaldırın. Bu şekilde, kullanıcılarınızın veritabanına yaptığı eklemeleri koruyabilirsiniz.


Genel olarak, sürüm yükseltmelerinden bahsederken size katılıyorum, ancak belirli bir sürümün geliştirilmesinin ortasında, bu, gerekenden çok daha fazla ek yüktür. Veritabanı şeması derleme bazında değişebilir ve her derleme için dönüştürme kodu yazma ihtiyacı tamamen yanlıştır.
Travis Jensen 04

7

Xcode> = 6 için

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

Xcode 9 -> Menü Çubuğu -> Donanım -> Tüm İçeriği ve Ayarları Sil kullanıyorsanız

Xcode -> Donanım -> Tüm İçeriği ve Ayarları Sil


5

Xcode 6'dan itibaren, bunu komut satırından şu şekilde yapabilirsiniz: xcrun simctl silme

Ayrıca, iOS Simulator uygulamasında (hem Xcode 6 sürümü hem de daha eski sürümler), şu anda önyüklenen aygıtı silmek için kullanılabilen "İçeriği ve Ayarları Sıfırla" adlı bir menü öğesi vardır.


ancak her derlemede otomatik olarak çalıştırılabilir mi? örneğin testler için?
Daniel Gomez Rico

Testlerinizi bir komut dosyası kullanarak yaptığınızı varsayarsak, uygun olduğu durumlarda bu komut dosyasına kesinlikle 'xcrun simctl silme <UDID>' ekleyebilirsiniz ...
Jeremy Huddleston Sequoia

Evet, aynen öyle dedim.
Jeremy Huddleston Sequoia

5

Bu, Xcode 6 ile çalışır:

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

.Bash_profile için

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

3

Xcode 6'dan itibaren:

xcrun simctl erase <sim udid> <- simülatörü sıfırlar.


1

Xcode Önbelleğini Temizle;

Command + Option + Üst Karakter + K

Command + Üst Karakter + K

(Her ikisini de kullanın çünkü farklı işlevlere sahipler)

Türetilmiş Veri içeriğini temizleyin;

Menü Çubuğu -> Pencere -> Ajanda -> Projeler -> Projenizi Seçin

Sağ Bölme klasörün adını gösterir ve ayrıca sağ taraftaki sil düğmesi türetilmiş tüm veri içeriklerini silmenizi sağlar.

Simülatör Önbelleğini Temizle;

Menü Çubuğu -> iOS Simülatörü -> İçeriği ve Ayarları Sıfırla


1

Doğrulanmış cevabın altındaki bir yorumda açıkladığım gibi :

Takvim aboneliklerini eklemeyi ve kaldırmayı test ediyordum. Gerçek bir cihazda, bir takvim aboneliğini Ayarlar , Hesaplar'dan kaldırabilirsiniz. ancak bu menü iOS Simulator'da mevcut değil ve tüm simülatörü sıfırlamak istemedim.

Bu yüzden, Cihaz klasörümün git ile yerel olarak sürümünü belirledim ve ekledikten sonra bir takvim aboneliğini kaldırmak için aşağıdaki komutları uyguladım:

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

Yani adımlar:

  1. Uygulamanızı iOS Simulator'a yükleyin ve yapmanız gerekeni yapın
  2. Cihazınızı içinde tanımlayın ~/Library/Developer/CoreSimulator/Devices/ve cdona bir yapın, ardından git initbir git deposu oluşturun
  3. Durumu kaydetmek istediğinizde, git commit -a "Message"
  4. Ayarları ne olursa olsun yapın (ör. Bir takvim aboneliği eklemek) ve testlerinizi yapın
  5. Simülatörü kapatın
  6. Yapmak git reset --hard HEAD
  7. Simülatörü başlatın, daha sonra yapılan tüm değişiklikler git commitkaybolur.

1

XCode'da, Pencere menü seçeneğine gidin, Aygıtlar'ı seçin ve ardından artık ihtiyacınız olmayanları silebilirsiniz.


0

Xcode <= 5 için

Aşağıdakileri ekledim ~/.bash_profile

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

Sadece simdeki tüm uygulamaları püskürtür.


1
Bu artık Xcode 6 ve üzeri için geçerli değildir.
Jeremy Huddleston Sequoia
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.