IPhone सिम्युलेटर की सफाई


107

क्या उस निर्देशिका को साफ करने का एक सीधा तरीका है जहां iPhone सिम्युलेटर के लिए निर्माण करते समय xcode एक ऐप को दिखाता है? मेरे पास एक sqlite डेटाबेस है जो आवश्यक होने पर स्टार्टअप पर दस्तावेज़ फ़ोल्डर में कॉपी हो जाता है। समस्या यह है कि मैं अपना स्कीमा बदल सकता हूं, लेकिन नया डेटाबेस कॉपी नहीं किया जाएगा, क्योंकि एक पहले से मौजूद है।

आदर्श रूप में, हर बार जब मैं निर्माण करता हूं, तो यह पिछली सामग्रियों को न्यूड कर देगा। क्या यह संभव है, या क्या मुझे इसे स्वयं करना है?


क्या सिम्युलेटर AppleScript का समर्थन करता है?
रोज

हाँ यह करता है। मैंने प्रत्येक डिवाइस और OS संस्करण के लिए iOS सिमुलेटरों के माध्यम से पुनरावृत्ति करने के लिए एक AppleScript लिखा है और उनकी सामग्री और सेटिंग्स रीसेट करें: github.com/michaelpatzer/ResetAllSimulators
mpatzer

जवाबों:


91

सिम्युलेटर में ऐप्स इंस्टॉल करता है:

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

यह भी देखें:

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

GUID फाइलें और निर्देशिकाएं सिम्युलेटर के इंस्टॉल किए गए एप्लिकेशन से मेल खाती हैं।

सिम्युलेटर से सभी एप्लिकेशन को हटाने के लिए मैन्युअल रूप से उन सभी फ़ाइलों / निर्देशिकाओं को हटा दें।

मुझे पता है कि XCode में निर्माण प्रक्रिया में स्क्रिप्ट जोड़ने का कोई तरीका है।

यह भी दिखता है कि अगर XCode GUID को बदल देता है तो यह प्रत्येक बिल्ड (निर्देशिका जहां मेरा ऐप XCode में बिल्ड के बीच परिवर्तन बैठता है) का उपयोग करता है, इसलिए हर समय उसी निर्देशिका को हटाने की कोशिश नहीं की जाएगी। यदि आप एक समय में केवल एक ऐप पर काम कर रहे हैं तो संपूर्ण निर्देशिका को साफ़ करना एक विकल्प होगा।


2
नीचे दिए गए @ idStar के उत्तर की जांच करना सुनिश्चित करें। इसने लायन / एक्सकोड 4 के बारे में अद्यतन जानकारी दी है और चीजों को स्वचालित करने में मदद करने के लिए एक अच्छी छोटी स्क्रिप्ट है।
PyjamaSam

मैं कैलेंडर सदस्यताएँ जोड़ने / हटाने का परीक्षण कर रहा था। एक वास्तविक डिवाइस पर, आप सेटिंग्स> खातों में एक कैलेंडर सदस्यता को हटा सकते हैं लेकिन यह मेनू आईओएस सिम्युलेटर पर मौजूद नहीं है और मैं पूरे सिम्युलेटर को रीसेट नहीं करना चाहता था। इसलिए मैंने स्थानीय रूप से अपने डिवाइस फ़ोल्डर को गिट के साथ समाप्त कर दिया और git reset HEAD --hard && git clean -fएक कैलेंडर सदस्यता को हटाने के बाद मैंने इसे जोड़ा।
थिबॉल्ट डी।

132

सेब देव संसाधनों से:

सिम्युलेटर की उपयोगकर्ता सामग्री और सेटिंग को उनके कारखाने की स्थिति पर सेट करने के लिए और आपके द्वारा इंस्टॉल किए गए एप्लिकेशन को हटाने के लिए, iPhone सिम्युलेटर> सामग्री और सेटिंग्स रीसेट करें चुनें ।

यह जैसा दिखता है:

iOS रीसेट करें


3
यह SQLite
Asped

1
यह उदाहरण के लिए ब्राउज़र का कैश स्पष्ट नहीं करता है
मऊ

1
अब यह सेटिंगHardware > Reset Content and Settings
हसीब Exx

22

जिस तरह से मैं ऐसा करता हूं वह बस सिम्युलेटर में मेरे ऐप के लिए आइकन पर क्लिक करना और पकड़ना है - फिर जब यह काले और सफेद (x) पर क्लिक करना शुरू होता है। एक संदेश पॉप अप करके पूछेगा कि क्या आप वास्तव में हटाना चाहते हैं और आप बस हाँ क्लिक करते हैं। अगली बार जब आप अपने ऐप को बनाएंगे और तैनात करेंगे तो यह बिना किसी अड़चन के नए sqlite db का उपयोग करेगा और आपको फाइलसिस्टम में चक्कर लगाने की जरूरत नहीं है।


यह काम नहीं करता है - यह वास्तव में सिम्युलेटर से डेटा को नष्ट नहीं करता है?
एडम

1
मेरी गलती - यह ठीक काम करता है (स्वीकार किए गए उत्तर में निर्देशिका को पढ़कर पुष्टि की गई है। मैं बस Apple के NSUserDefaults के उपयोगकर्ता-अनजान डिजाइन को भूल गया हूं (किसी भी समझदार तरीके से मानों की रिपोर्ट नहीं की गई है)
एडम

@quadelirus, मुझे लगता है कि इस स्थिति में आपका जवाब सबसे उपयुक्त है।

यह वही है जो मैंने किया था, लेकिन मुझे यकीन नहीं है कि ऐप को कैसे बंद किया जाए जो पहले से ही सिम्युलेटर में खुला है। जब तक मैं ऐप को बंद नहीं करता, मैं सिम्युलेटर पर नियंत्रण प्राप्त नहीं कर सकता था।
वाना कॉफी

1
@WannaCoffee देखें stackoverflow.com/questions/18519799/...
जॉन

12

मैक ओएस एक्स शेर पर iOS 5 के बाद, आप कोशिश कर सकते हैं:

  1. एक स्क्रिप्ट बनाएं RemoveSimulatorApps.commandजिसमें यह शामिल है:
    rm -rf "$ HOME / लाइब्रेरी / एप्लीकेशन सपोर्ट / iPhone सिम्युलेटर / 5.0 / एप्लीकेशन / *"
    
  2. इस स्क्रिप्ट को अपनी निर्देशिका में सहेजें PATH
  3. फ़ाइल को निष्पादन योग्य बनाएं, जैसे:
    chmod + x RemoveSimulatorApps.command

मान्यताओं

  • आप इसे कीबोर्ड की पसंदीदा बटन से मंगाना चाह सकते हैं, जैसे कि लॉजिटेक या माइक्रोसॉफ्ट कीबोर्ड पर प्रोग्रामेबल कीज़ के साथ (इसलिए, इसे कहने के बजाय .command फ़ाइल के रूप में सहेजना।
  • आप iOS सिम्युलेटर में सब कुछ उड़ाने के साथ ठीक हैं (आदर्श यदि आप सक्रिय रूप से एक ऐप पर काम कर रहे हैं)
  • दूसरों से सभी नोट्स एक अच्छा अपग्रेड करने योग्य ऐप आदि होने के बारे में लागू होते हैं (मुझे व्यक्तिगत रूप से यह उपयोगी नॉन-बी / सी मिला है मेरे पास विकास मोड स्विच हैं जो एक विशिष्ट राज्य में एक डेटाबेस को फिर से लोड करता है जो मैं कुछ निरंतर मजबूती / त्रुटि से निपटने की कोशिश कर रहा था)

1
यह पूरी तरह से काम करता है, बस अपने दाहिने आईओएस संस्करण को रास्ते में जोड़ना याद रखें :)
एस्पेड

1
यह पूर्ण पथ के बजाय ~ जोड़ने के लिए समझ में आता है?
निकिता लियोनोव

8

यह overkill हो सकता है लेकिन ..

आप मेनू और 'सामग्री रीसेट करें और सेटिंग ...' का भी उपयोग कर सकते हैं


7

क्या आप वास्तव में करने की कोशिश कर रहे हैं अपने डेटाबेस को खाली करना है, यदि आपने स्कीमा को बदल दिया है। ऐसा करने का एक तरीका है, और यह आपको लंबे समय तक खुश कर देगा जब आप अपने ऐप के संस्करण 2.0, 3.0, आदि को शुरू करना चाहते हैं, तो अपने sqlite टेबल के संस्करण की जांच करें, और यदि यह बदल गया है, तो त्यागें। पुरानी फ़ाइल और अपनी बंडल में एक का उपयोग करें।

जब आप एक नए स्कीमा के साथ एक नया संस्करण जहाज करते हैं, तो एक ग्राहक के iPhone को साफ करने के तरीके से सिम्युलेटर को साफ करने का तरीका नहीं मिलेगा।

अतिरिक्त बिंदुओं के लिए, यह निर्धारित करने के बाद कि आपने एक पुराने स्कीमा का सामना किया है, आप पुराने डेटाबेस को नष्ट किए बिना नए डेटाबेस को कॉपी करना चाहते हैं, और पुराने डेटाबेस से किसी भी दिलचस्प डेटा को नए में लोड कर सकते हैं। फिर पुराने डेटाबेस को उड़ा दें। इस तरह से आप डेटाबेस में अपने उपयोगकर्ता के परिवर्धन को संरक्षित कर सकते हैं।


सामान्य तौर पर, जब आप रिलीज़ अपग्रेड के बारे में बात कर रहे होते हैं, तो मैं आपसे सहमत होता हूं, लेकिन किसी विशेष संस्करण के विकास के बीच, यह आवश्यक से कहीं अधिक ओवरहेड है। डेटाबेस स्कीमा प्रति-बिल्ड के आधार पर बदल सकता है, और हर बिल्ड के लिए रूपांतरण कोड लिखने की आवश्यकता सिर्फ गलत है।
ट्रैविस जेन्सेन


6

यदि आप Xcode 9 -> मेनूबार -> हार्डवेयर -> सभी सामग्री और सेटिंग्स का उपयोग कर रहे हैं

Xcode -> हार्डवेयर -> सभी सामग्री और सेटिंग्स मिटा दें


5

Xcode 6 के रूप में, आप इसे कमांड लाइन से कर सकते हैं: xcrun simctl erase

इसके अलावा, आईओएस सिम्युलेटर ऐप (एक्सकोड 6 संस्करण और पुराने संस्करण दोनों) में एक मेनू आइटम है जिसे "रीसेट सामग्री और सेटिंग्स" कहा जाता है जिसका उपयोग वर्तमान में बूट डिवाइस को मिटाने के लिए किया जा सकता है।


लेकिन यह प्रत्येक बिल्ड पर स्वचालित रूप से निष्पादित किया जा सकता है? उदाहरण के लिए परीक्षण?
डैनियल गोमेज़ रिको

मान लें कि आप किसी स्क्रिप्ट का उपयोग करके अपने परीक्षण कर रहे हैं, तो आप निश्चित रूप से उस स्क्रिप्ट में 'xcrun simctl erase <UDID>' जोड़ सकते हैं, जहाँ उपयुक्त हो ...
जेरेमी हडलस्टन

हां, ठीक यही बात मैंने कही है।
जेरेमी हडलस्टन सीक्विया

5

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

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

3

Xcode 6 के रूप में:

xcrun simctl erase <sim udid> <- सिम्युलेटर को रीसेट करता है।


1

स्पष्ट Xcode कैश;

कमांड + विकल्प + Shift + K

कमान + Shift + K

(दोनों का उपयोग करें क्योंकि उनकी अलग कार्यक्षमता है)

व्युत्पन्न डेटा सामग्री साफ़ करें;

मेनू बार -> विंडो -> ऑर्गनाइज़र -> प्रोजेक्ट्स -> अपने प्रोजेक्ट का चयन करें

राइट पेन फ़ोल्डर का नाम दिखाता है और दाईं ओर बटन भी हटा देता है जिससे आप सभी प्राप्त डेटा सामग्री को हटा सकते हैं।

स्पष्ट सिम्युलेटर कैश;

मेनू बार -> आईओएस सिम्युलेटर -> रीसेट सामग्री और सेटिंग्स


1

जैसा कि मैं मान्य उत्तर के तहत एक टिप्पणी में बता रहा था :

मैं कैलेंडर सदस्यताएँ जोड़ने और हटाने का परीक्षण कर रहा था। एक वास्तविक डिवाइस पर, आप सेटिंग्स , खातों में एक कैलेंडर सदस्यता को हटा सकते हैं लेकिन यह मेनू आईओएस सिम्युलेटर में मौजूद नहीं है और मैं पूरे सिम्युलेटर को रीसेट नहीं करना चाहता था।

इसलिए मैंने स्थानीय रूप से अपने डिवाइस फ़ोल्डर को गिट के साथ समाप्त कर दिया और एक कैलेंडर सदस्यता को हटाने के लिए निम्नलिखित कमांड निष्पादित करता हूं जब मैंने इसे जोड़ा:

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

तो कदम हैं:

  1. IOS सिम्युलेटर पर अपना एप्लिकेशन इंस्टॉल करें और आपको वही करना है जो आपको करना है
  2. अपने डिवाइस को पहचानें ~/Library/Developer/CoreSimulator/Devices/और cdउसमें एक करें, फिर git initएक गिट रिपॉजिटरी बनाने के लिए
  3. एक बार जब आप राज्य को बचाना चाहते हैं, तो प्रदर्शन करें git commit -a "Message"
  4. सेटिंग्स में जो भी बदलाव करें (उदा: कैलेंडर सदस्यता जोड़कर) और अपने परीक्षण करें
  5. सिम्युलेटर को बंद करें
  6. करना git reset --hard HEAD
  7. सिम्युलेटर शुरू करें, git commitचले जाने के बाद किए गए सभी परिवर्तन ।

1

XCode में, विंडो मेनू विकल्प पर जाएं, डिवाइसेस का चयन करें और फिर आप उन्हें हटा सकते हैं जिनकी आपको अब आवश्यकता नहीं है।


0

Xcode के लिए <= 5

मैंने निम्नलिखित को अपने साथ जोड़ा ~/.bash_profile

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

यह सिम पर मौजूद सभी एप्स को बंद कर देता है।


1
यह अब Xcode 6 और इसके बाद के संस्करण के साथ लागू नहीं है।
जेरेमी हडलस्टन सीक्विया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.