ฉันสามารถลบตัวจำลองอุปกรณ์ที่ไม่จำเป็นของ Xcode ได้หรือไม่


64

ฉันพบว่า Xcode บนแล็ปท็อปของฉันใช้พื้นที่เก็บข้อมูลจำนวนมากดังนั้นฉันจึงพยายามลบไฟล์ที่ไม่จำเป็นใน Xcode

Application/Xcode.app/Contents/Developer/Platforms/มีสี่ไดเรกทอรีต่ำกว่า ฉันรู้สึกอย่างนั้นWatchSimulator.platformและAppleTVSimulator.platformไม่จำเป็นเพราะฉันใช้ Xcode เกือบเฉพาะสำหรับการพัฒนา iOS ขั้นพื้นฐาน

ฉันอยากจะรู้ว่าฉันสามารถลบไดเรกทอรีแพลตฟอร์มเหล่านั้นได้โดยตรงหรือไม่

ไดเรกทอรี


เพียงแค่ FYI ... คุณจะได้รับพื้นที่เพียงครึ่งเดียวที่ปรากฏเนื่องจากมีการบีบอัด ดูที่ Get Data sheet เช่นในระบบของฉันสำหรับ WatchOS.platform มันแสดง 50,579,830 ไบต์ (28.2 MB บนดิสก์) สำหรับ 2,212 รายการและ AppleTVSimulator.platform แสดง 1,865,477,227 ไบต์ (1.1 GB บนดิสก์) สำหรับ 29,705 รายการ ดังนั้นคุณจะไม่ได้รับพื้นที่ว่างมากเท่ากับค่าที่แสดงใน OP ของคุณ
user3439894

ไฟล์ที่มีการบีบอัดและแอปเปิ้ลของ HFS + File System สนับสนุนใสอัด แต่ Finder และlsในเทอร์มิขาดธงเพื่อดูไฟล์ที่มีการใช้hfsCompressionซองรับข้อมูลแผ่นที่คุณสามารถดูบนดิสก์ค่าที่แตกต่างกันอย่างมากนั้นแสดงขนาดในไบต์ . มียูทิลิตี้ที่เขียนโดยบุคคลที่สามซึ่งรวมถึงรหัสที่มาหากต้องการที่จะรวบรวมมันเองคือafsctool ความสามารถของมันคือการรับข้อมูลเกี่ยวกับไฟล์บีบอัด HFS + ที่มีอยู่
user3439894

โปรแกรมใดที่ช่วยคุณกำหนดไฟล์ขนาดใหญ่เหล่านี้ในไดรฟ์
Pysis

1
@Pysis ดูเหมือนOmniDiskSweeperกับฉัน เครื่องมือดังกล่าวยังไม่ได้รับการอัปเดตสำหรับ APFS และการบีบอัดแม้ว่าจะดูเหมือนว่าพวกเขามีการทดสอบใหม่บางส่วนแล้ว
Zach Lipton

1
@Zach Lipton, ถ้า OP กำลังเรียกใช้ High Sierra และ APFS ไฟล์อาจไม่ถูกบีบอัดเนื่องจาก APFS ยังไม่รองรับการบีบอัด หรือการเปลี่ยนแปลงนี้ใน 10.13.1
user3439894

คำตอบ:


63

ใช่คุณสามารถลบโปรแกรมจำลองใด ๆ ที่คุณไม่ได้ใช้ ฉันทำสิ่งนี้เป็นประจำเมื่อฉันหยุดสนับสนุน iOS เวอร์ชันเก่า

หากคุณลบพวกเขาแล้วคุณพบว่าคุณต้องการพวกเขาในบางจุดในอนาคตคุณสามารถดาวน์โหลดได้อีกครั้งจากเว็บไซต์นักพัฒนาของ Apple

วิธีที่ดีที่สุดในการลบไฟล์เหล่านี้คือ Xcode Window -> Devices and Simulatorsไปที่ นี่จะเป็นการเปิดหน้าต่างใหม่พร้อมอุปกรณ์ทั้งหมดที่คุณใช้ใน Xcode

ที่ด้านบนให้แตะSimulatorsและคุณจะเห็นรายการทางด้านซ้าย

จากนั้นหาจำลองที่คุณต้องการลบแล้วCntl- คลิก (หรือคลิกขวา) Deleteและเลือก

ฉันทำสิ่งนี้กับตัวจำลองแต่ละตัวที่ทำงานใน iOS แต่ละเวอร์ชันที่ฉันไม่สนับสนุนอีกต่อไป


7
ฉันรู้ว่าโพสต์นี้มีอายุสองสามปี แต่นี่ไม่ปรากฏว่าจะลบตัวจำลอง แต่เป็นเพียงรายชื่อของมันใน Xcode ดังนั้นหากจำเป็นต้องลบออกเพื่อประหยัดพื้นที่ดิสก์นี่ไม่ใช่วิธีที่ถูกต้อง
Sean Patterson

34

ตอนนี้ Xcode แบ่งปันเครื่องมือจำลองกับผู้ใช้ทั้งหมด ดังนั้นคุณต้องลบตัวจำลองออกจากโฟลเดอร์ต่อไปนี้:

/Library/Developer/CoreSimulator/Profiles/Runtimes

ตัวอย่างเช่น:

cd /Library/Developer/CoreSimulator/Profiles/Runtimes
sudo rm -rf iOS\ 8.4.simruntime/
sudo rm -rf iOS\ 9.3.simruntime/

ไชโย!


29

คุณสามารถลบตัวจำลองที่ไม่พร้อมใช้งานทั้งหมดได้อย่างง่ายดายด้วยคำสั่งนี้ในเทอร์มินัล:

xcrun simctl delete unavailable

1
ในความเป็นจริงมันไม่ได้ทำอะไรมาก หากคุณเรียกใช้xcrun simctl listคุณจะเห็นว่ามีเพียง 10% ของอุปกรณ์ที่ถูกพิจารณาว่า "ไม่พร้อมใช้งาน" นอกจากนี้อุปกรณ์ไม่ใช่หมูอวกาศจริงที่นี่ iOS runtimes คือ @ คำตอบของ Francois นั้นดีกว่าในทางปฏิบัติ
joshuakcockrell

1
@joshuakcockrell ไม่จำเป็นต้อง; หลังจากหลายปีของการสะสมเวอร์ชั่นตัวจำลองที่ล้าสมัยสิ่งนี้ทำให้ฉันมีพื้นที่ว่างในกรณีของฉัน ดังนั้นฉันเดาว่า ymmv
Paul Cantrell

ฉันนับ ( wc -l) 148 บรรทัดในรายการด้วย 'ไม่พร้อมใช้งาน' และ 128 ออก คำสั่งลบด้านบนทำให้ฉัน 14GB กลับมา
Craig

15

แม้คำตอบของ @ fsb อนุญาตให้ลบ "อินสแตนซ์" ของเครื่องมือจำลองวิธีที่ถูกต้องในการเพิ่มพื้นที่ว่างขนาดใหญ่ที่ใช้โดยแพลตฟอร์มจำลองเก่าที่ไม่ต้องการอีกต่อไปจะไปที่โฟลเดอร์ต่อไปนี้:

~/Library/Developer/Xcode/iOS DeviceSupport

และลบโฟลเดอร์ที่สอดคล้องกับเครื่องมือจำลอง / แพลตฟอร์มที่คุณไม่ต้องการอีกต่อไป

นอกจากนี้ยังมีบทความที่ดีมากเกี่ยวกับเรื่องนี้และเคล็ดลับอื่น ๆ :


3
ดูเหมือนว่า/Library/Developer/Xcodeจะถูกลบหลังจากการอัปเดต macOS ใหม่ ฉันไม่พบที่ใดก็ได้
Suhaib

1
@Suhaib คุณลืมเครื่องหมายตัวหนอนเริ่มต้น " ~ " ซึ่งทำให้เส้นทางเริ่มต้นในไดเรกทอรีบ้านของคุณ ไดเรกทอรีที่ถูกต้องคือ: ~/Library/Developer/Xcode/iOS DeviceSupport.
Ricardo Barroso

6

ที่ Xcode เก็บเครื่องจำลองในปี 2019+ Catalina, Xcode 11.0

runtimes

$ open /Library/Developer/CoreSimulator/Profiles/Runtimes

ตัวอย่างเช่นiOS 13.0, watchOS 6.0เหล่านี้ใช้พื้นที่มากที่สุดโดยไกล แต่ละคนสามารถได้ถึง ~ 5GB

อุปกรณ์

$ open ~/Library/Developer/CoreSimulator/Devices

ตัวอย่างเช่น: iPhone Xr, iPhone 11 Pro Max. โดยทั่วไปจะมีค่า <15 mb ต่อครั้ง

คำอธิบาย

ตัวจำลองจะแบ่งระหว่าง runtimes และอุปกรณ์ หากคุณเรียกใช้$ xcrun simctl listคุณสามารถเห็นภาพรวม แต่ถ้าคุณต้องการค้นหาตำแหน่งทางกายภาพของตัวจำลองเหล่านี้ให้ดูในไดเรกทอรีเหล่านี้ที่ฉันได้แสดง

การลบรันไทม์ที่คุณไม่สนับสนุนนั้นปลอดภัยอย่างสิ้นเชิง คุณสามารถติดตั้งใหม่ได้ในภายหลังหากต้องการ


1
ขอบคุณสิ่งนี้ช่วยฉันได้มาก!
acido

5
  • เพื่อแสดงรายการตัวจำลองทั้งหมดxcrun simctl list devicesหรือxcrun simctl list --json

  • เพื่อลบอุปกรณ์เฉพาะ xcrun simctl delete <device udid>

  • เพื่อลบอุปกรณ์เก่าสำหรับ runtimes ที่ไม่ได้รับการสนับสนุนอีกต่อไป xcrun simctl delete unavailable


คุณสามารถใช้xcrun simctl delete allฉันคิดว่า
revau.lt

1

เปิด Terminal.app และเรียกใช้สิ่งต่อไปนี้:

cd /Library/Developer/CoreSimulator/Profiles/Runtimes

ตอนนี้ให้พิมพ์เวอร์ชัน iOS ที่คุณต้องการลบตัวจำลองในคำสั่งด้านล่างเช่นหากคุณต้องการลบสำหรับ iOS 12.0 ให้รัน:

sudo rm -rf iOS\ 12.0.simruntime/


1

ในการลบตัวจำลองโดยเวอร์ชั่น iOS:

หากคุณต้องการลบตัวจำลองสำหรับรุ่นที่ระบุเท่านั้นและคุณfastlaneติดตั้งแล้วคุณสามารถเปิดเปลือกทับทิมแบบโต้ตอบและเรียกใช้คำสั่งต่อไปนี้เพื่อลบตัวจำลอง iOS 10 ทั้งหมด:

# launch the interactive ruby shell (irb)
$ irb

# require the device manager capabilities of fastlane core
irb(main):001:0> require 'fastlane_core/device_manager'

# delete all iOS 10 simulators
irb(main):002:0> FastlaneCore::Simulator.delete_all_by_version(os_version: "10.0")
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.