Xcode Simulator: làm thế nào để loại bỏ các thiết bị cũ không cần thiết?


209

Tôi đang chạy Xcode 4.3.1 iOS-Simulator vốn chỉ hỗ trợ iOS 5.1.

Tôi cần kiểm tra mã của mình với iOS 4.3, vì vậy tôi đã sử dụng tính năng "Cài đặt" của Xcode để cài đặt mã như được mô tả trong "Cài đặt Xcode với trình giả lập thiết bị iOS 4.3?"

Bây giờ tôi đã kết thúc thử nghiệm nhưng không thể tìm cách gỡ cài đặt các phần 4.3 ("Trình mô phỏng iPhone 4.3" và "Trình mô phỏng iPad 4.3"). Tôi muốn giảm sự lộn xộn trong menu Scheme.

Không ai trên danh sách Xcode của Apple biết câu trả lời!

EDIT: lưu ý rằng nhiều thứ đã thay đổi kể từ Xcode 4.3, vì vậy hãy đề nghị bất cứ ai đọc cái này xem tất cả các câu trả lời. Những cái mới nhất như Steve Moser có thể sẽ hữu dụng hơn với bạn!

EDIT 10/2017: Đăng trên Twitter bởi Julio Carrettoni

Nếu bạn là nhà phát triển iOS, hãy thực hiện điều này:
$ xcrun simctl delete unavailable
Nó loại bỏ Xcode giả lập cũ không còn sử dụng. Đối với tôi, đó là 6Gb. Tôi đã không thử nó ...

[Ngoài ra, tôi chỉ thấy Russ Bishop đã đề cập đến điều này trong một bình luận bên dưới ...]

Câu trả lời:


172

Bạn đã cố gắng xóa SDK 4.3 từ trong Gói Xcode chưa?

/Appluggest/Xcode.app/Contents/Developer/Plevelops/iPhoneSimulator.pl platform / Developer / DDKs

vui lòng xóa tập tin .dmg tương ứng trong

~ / Thư viện / Caches / com.apple.dt.Xcode / Tải xuống

để ngăn Xcode cài đặt lại gói tương tự một lần nữa.


cho XCode> = 6 xem câu trả lời của @ Praveen-matanam


3
Bạn là một thiên tài! Cám ơn rất nhiều! Không thể tin rằng không có Xcode listerv biết điều này. Tôi tìm kiếm ở một vài nơi nhưng không phải nơi bạn đã đề nghị.
David H

Điều này sẽ không hoạt động trong xcode 4.5.2. Ngay khi bạn khởi động lại trình biên dịch, nó sẽ yêu cầu bạn cài đặt lại các thiết bị cũ hơn. Hủy bỏ sẽ thoát xcode để bạn buộc phải cài đặt lại.
Alejandro Luengo

Đúng vậy, Alejandro, Apple dường như đã thay đổi "điều cấp phép" để bạn luôn cần một tài khoản nhà phát triển hợp lệ và bạn phải cài đặt lại tất cả các tiện ích mở rộng trên mỗi bản cập nhật lớn trong ứng dụng .. các hệ thống cũ cũng không được hỗ trợ; (
childno͡.de 16/1/13

1
Xem câu trả lời của Dan Reese bên dưới để biết điều gì đó hoạt động trên Xcode 4.6.
BJ Homer

2
Đã làm việc cho Xcode 6.3.1, cùng với câu trả lời này stackoverflow.com/a/30206853/286618 . Xóa tài liệu cũ và tiết kiệm 9GB !!!
RoLYroLL

203

Trong Xcode 6+, bạn chỉ cần vào Menu> Cửa sổ> Thiết bị> Trình mô phỏng và xóa một trình giả lập mà bạn không cần.


1
Câu hỏi có liên quan trong phiên bản 4 và có lẽ 5. Như bạn có thể thấy nó khá khó. Tôi đã tránh sử dụng các mô phỏng cũ hơn kể từ đó bản thân mình.
David H

3
Đúng rồi. Nếu bạn muốn các trình giả lập "thực sự biến mất" hoặc cài đặt lại chúng trong Xcode -> Tùy chọn -> Tải xuống, bạn phải xóa thời gian chạy giả lập như được chỉ ra bên dưới stackoverflow.com/a/30206853/1344293
mathz

Cảm ơn đây là cách dễ nhất để quản lý các trình giả lập. thay vì xóa các trình giả lập khỏi các thư mục xcode. Điều này làm việc cho tôi :)
Chirag

Làm cách nào để xóa thiết bị có phiên bản iOS cũ hơn? Cửa sổ thiết bị chỉ hiển thị các trình giả lập với iOS 9.1 (trên Xcode 7.1). Tôi muốn tránh chỉnh sửa device_set.plist và xóa các thư mục trong Finder.
sinh học

Bạn cũng có thể sử dụng tập lệnh này để tạo lại trình giả lập: gist.github.com/cabeca/3ff77007204e5479f7af
tomi44g

154

Trong Xcode 6 trở lên, bạn có thể tìm và xóa các trình giả lập khỏi đường dẫn /Library/Developer/CoreSimulator/Profiles/Runtimes. Khởi động lại Xcode để có hiệu lực (có thể không cần thiết).


6.4 ở đây. Cần khởi động lại máy của tôi để nó có hiệu lực.
aasatt

2
7.2 - không cần khởi động lại
TheEye

xcode 8.0 cần khởi động lại để xóa các trình giả lập không hợp lệ trong cửa sổ thiết bị
Doug Amos

2
@thiagigsoso là do bạn chưa cài đặt bất kỳ phiên bản giả lập nào khác, nhưng iOS 10.0+. Tôi chỉ có ở đó .simruntimecác tập tin 9.3, 8.4 và 8.3
Aleksey Potapov

1
Tôi cũng có thể ở~/Library/Developer/...
Roberto

124

Cập nhật tháng 10 năm 2018

Như đã đề cập, bạn có thể sử dụng xcrunđể làm một số điều:

  • xcrun simctl list deviceshoặc xcrun simctl list --jsonliệt kê tất cả các trình giả lập
  • xcrun simctl delete <device udid> xóa thiết bị cụ thể
  • xcrun simctl delete unavailable để xóa các thiết bị cũ trong thời gian chạy không còn được hỗ trợ

Nhiều thứ bạn có thể làm với xcrun(xem đoạn mã)

Câu trả lời gốc

Tháng 9 năm 2017, Xcode 9

Thời gian chạy

Bạn sẽ tìm thấy chúng ở đây:

/Library/Developer/CoreSimulator/Profiles/Runtimes

nhập mô tả hình ảnh ở đây

Thiết bị

Để xóa thiết bị tại đây:

~/Library/Developer/CoreSimulator/Devices

Dễ dàng hơn nhiều để xóa chúng bằng Xcode: Xcode-> Window-> Devices and Simulators nhập mô tả hình ảnh ở đây

Giúp Xcode "quên" về thời gian chạy và ngăn cài đặt lại chúng - xóa (các) tệp .dmg tại đây:

~/Library/Caches/com.apple.dt.Xcode/Downloads

Tôi hy vọng nó sẽ giúp được ai đó


8
Vui lòng không xóa các thiết bị khỏi hệ thống tập tin; sử dụng xcrun simctl delete <device udid>. Bạn cũng có thể chạy xcrun simctl delete unavailableđể xóa các thiết bị cũ trong thời gian chạy không còn được hỗ trợ.
Nga

1
Tôi không có ~ / Library / Caches / com.apple.dt.Xcode / Tải xuống (không có thư mục Tải xuống trong ~ / Library / Caches / com.apple.dt.Xcode /), tự hỏi tại sao
auspicy99

1
đường dẫn thư mục bạn liệt kê không tồn tại, Xcode 9.4
Peter Cullen

Đây là những gì tôi đang tìm kiếm: không xóa từng thiết bị mô phỏng 12.2, mà xóa toàn bộ trình giả lập 12.2 khỏi hệ thống. Đường dẫn làm việc với XCode 10.3. Sau khi xóa, tôi phải khởi động lại nó, và số lượng các trình giả lập chỉ giảm một nửa.
catanore

77

Chạy lệnh này trong thiết bị đầu cuối để loại bỏ các trình giả lập không thể truy cập được từ phiên bản Xcode hiện tại (8+?) Đang sử dụng trên máy của bạn.

xcrun simctl delete unavailable

Ngoài ra, nếu bạn đang tìm cách lấy lại không gian liên quan đến giả lập, Michael Tsai nhận thấy rằng việc xóa nhật ký sim đã tiết kiệm cho anh ta 30 GB.

~/Library/Logs/CoreSimulator

2
Cảm ơn! Rõ ràng câu hỏi ban đầu là dành cho Xcode 4 nên mọi thứ đã thay đổi rất nhiều kể từ đó!
David H

2
Nó phát hành gần 20GB cho tôi. Cảm ơn
Libor Zapletal

26

Xcode 4.6 sẽ nhắc bạn cài đặt lại mọi phiên bản cũ hơn của Trình mô phỏng iOS nếu bạn chỉ cần xóa SDK. Để tránh điều đó, bạn cũng phải xóa bộ đệm Xcode. Sau đó, bạn sẽ không bị buộc phải cài đặt lại SDK cũ hơn khi khởi chạy.

Để xóa trình giả lập iOS 5.0, hãy xóa những thứ này và sau đó khởi động lại Xcode:

  1. /Ứng dụng
  2. ~ / Thư viện / Bộ nhớ cache / com.apple.dt.Xcode

Ví dụ: sau khi thực hiện cài đặt Xcode sạch, tôi đã cài đặt trình giả lập iOS 5.0 từ tùy chọn Xcode. Sau đó, tôi quyết định rằng 5.1 là đủ nhưng không thể loại bỏ phiên bản 5.0. Xcode liên tục buộc tôi phải cài đặt lại khi khởi chạy. Sau khi xóa cả tệp bộ đệm và SDK, nó không còn được yêu cầu nữa.


1
Một câu trả lời chính xác hơn một chút ở đây , mặc dù tôi chưa tự mình kiểm tra nó.
Dan Reese

21

Tôi đã từng gặp vấn đề tương tự. Tôi đã hết chỗ.

Xóa các mô phỏng thiết bị cũ KHÔNG giúp được gì.

Vấn đề không gian của tôi là do xCode. Nó giữ một bản sao của mọi phiên bản iOS trên macOS của tôi kể từ khi tôi cài đặt xCode.

Xóa phiên bản iOS bạn không muốn và giải phóng không gian đĩa. Tôi đã tiết kiệm 50GB + dung lượng.

nhập mô tả hình ảnh ở đây LƯU Ý -> nếu bạn có nhiều người dùng trên một máy macOS, hãy đảm bảo tìm CHỈ thư mục với tài khoản người dùng đã cài đặt xCode ban đầu.


Tôi đếm 9G ở trên - bạn đã phục hồi 75G như thế nào?
David H

xin chào @DavidH - 75GB là trước khi tôi dọn dẹp. Như tôi đã làm việc với xCode trong nhiều năm, xCode đã âm thầm cài đặt mọi biến thể của iOS 7, 8, 9 và 10 trên máy của tôi. Trong thực tế có lẽ tôi chỉ cần iOS10 và iOS11, đi tiếp.
rustyMagnet

1
Điều này thật tuyệt - tôi chưa bao giờ biết về nơi này. Tôi đã có hàng chục GB ở đây, đã cài đặt mọi phiên bản Xcode.
Echelon

Thư mục tồn tại với xCode 9.4 @PeterCullen. Bạn chỉ cần truy cập nó từ tài khoản người dùng đã cài đặt xCode ban đầu. Tôi có hai tài khoản người dùng trên máy Mac chia sẻ xCode. Chỉ tài khoản người dùng đã cài đặt xCode mới có thể xem thư mục này.
rustyMagnet

1
bạn đang mở Finder và chọn "Chuyển đến thư mục"? Thư viện là một thư mục ẩn, theo mặc định.
rustyMagnet

9

làm theo một số câu trả lời ở đây, xóa một số trình giả lập khỏi Menu Xcode của tôi> Cửa sổ> Thiết bị> Trình mô phỏng không làm gì để giúp không gian đĩa chết của tôi: nhập mô tả hình ảnh ở đây

tuy nhiên, cd ~/Library/Developer/Xcode/iOS\ DeviceSupportvà chạy du -sh *tôi có tất cả những người này:

2.9G    10.0.1 (14A403)
1.3G    10.1.1 (14B100)
2.9G    10.3.2 (14F89)
1.3G    10.3.3 (14G60)
1.9G    11.0.1 (15A402)
1.9G    11.0.3 (15A432)
2.0G    11.1.2 (15B202)
2.0G    11.2 (15C114)
2.0G    11.2.1 (15C153)
2.0G    11.2.2 (15C202)
2.0G    11.2.6 (15D100)
2.0G    11.4 (15F79)
2.0G    11.4.1 (15G77)
2.3G    12.0 (16A366)
2.3G    12.0.1 (16A404)
2.3G    12.1 (16B92)

Tất cả cùng nhau đó là 33 GB!

Tắm máu sau đó

xem thêm chi tiết tại đây


6

Ngoài câu trả lời @ childno.de, thư mục Mac của bạn

/private/var/db/receipts/

vẫn có thể chứa iPhoneSimulatorSDK lỗi thời .bom.plistcác tệp như thế này:

/private/var/db/receipts/com.apple.pkg.iPhoneSimulatorSDK8_4.bom /private/var/db/receipts/com.apple.pkg.iPhoneSimulatorSDK8_4.plist

Những thứ này có thể làm cho tab Tải xuống của bạn tùy chọn Xcode hiển thị một đánh dấu ( ) cho phiên bản giả lập lỗi thời đó.

Để xóa các trình giả lập không mong muốn, bạn có thể thực hiện tìm kiếm bằng lệnh bash này từ thiết bị đầu cuối Mac của bạn:

sudo find / -name "*PhoneSimulator*"

Sau đó đi đến các thư mục tương ứng để xóa thủ công SimulatorSDK không mong muốn


4

Trong XCode mở Cửa sổ - Thiết bị, sau đó chọn và xóa các trình giả lập đã lỗi thời.


3

Một điều khác bạn có thể làm là thay đổi mục tiêu Triển khai thành giá trị cao nhất. Điều này sẽ ngăn Menu Scheme hiển thị các phiên bản cũ hơn.

Để thực hiện việc này, hãy đi tới: Mục tiêu-> Tóm tắt, sau đó thay đổi Mục tiêu triển khai.


Có thể mọi thứ đã thay đổi kể từ khi tôi đăng câu hỏi, nhưng khi tôi làm, bạn sẽ thấy các trình giả lập khác nhau trong menu Scheme, và nó chỉ phức tạp khi chọn đúng.
David H

3

Tôi đã thử tất cả các câu trả lời. Không ai trong số họ làm việc cho tôi.

Điều làm việc cho tôi trên Sierra + Xcode 8.2 sẽ là:

/Library/Developer/CoreSimulator/Devices và xóa tất cả các thiết bị.

(Có lẽ điều này sẽ không làm việc cho bạn, có lẽ đây một giải pháp như một độc lập, hoặc có thể bạn phải làm điều này, thêm vào câu trả lời khác, nhưng tôi đã làm tất cả các giải pháp ở đây và vì vậy không chắc chắn những gì đã làm các hành động). Chỉ cần lưu ý rằng một số câu trả lời ở đây đã cũ và vị trí của trình giả lập đã thay đổi. Câu trả lời của Snowcrash dường như là gần đây nhất.


Tôi có thể giả sử bạn tắt Xcode trước, đã làm điều này, sau đó khởi động lại Xcode?
David H

@DavidH xin lỗi tôi không nhớ những gì tôi đã làm. Tôi đã có vấn đề trong 3-4 tuần. Mỗi lần nó xảy ra khi tôi chuyển đổi giữa các dự án / thiết bị sim ... Tôi chỉ thử mọi thứ và điều này dường như làm điều đó cho tôi ... một lần nữa nó có thể là thứ khác cho bạn
Honey

@DavidH bạn cũng đã thử câu trả lời này
Honey

Đối với Xcode 10 và mới hơn, thư mục là : ~/Library/Developer/CoreSimulator/Devices.
blackjacx

3

Tôi đã viết lên tập lệnh bash một dòng sẽ xóa TẤT CẢ các trình giả lập của bạn:

xcrun simctl list devices | grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})" | xargs -L1 xcrun simctl delete
  • xcrun simctl list devices sẽ liệt kê tất cả các trình giả lập được cài đặt trên máy của bạn
  • grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})" sẽ lấy UUID thiết bị
  • xargs -L1 xcrun simctl delete sẽ cố gắng xóa thiết bị cho mỗi UUID mà nó tìm thấy

Nếu bạn muốn xem mọi thứ nó sẽ thực thi, bạn có thể thêm echotrước đó xcrun, tức là

xcrun simctl list devices | grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})" | xargs -L1 echo xcrun simctl delete

2

Vấn đề với những câu trả lời này là, với mỗi bản cập nhật Xcode, menu và vị trí sẽ thay đổi.

Chỉ cần đi đến /Applications/Xcode.app/Contents/Developer/Platformsvà xóa những gì bạn không cần. Xcode sẽ bắt đầu tốt. Nếu bạn hoàn toàn lo lắng thì bạn chỉ cần khôi phục từ Thùng rác.


2
Tôi thực sự nghi ngờ rằng Xcode tải xuống trình giả lập mà bạn yêu cầu nó đi kèm. Chắc chắn họ đi vào thư viện người dùng, phải không? Điều đó nói rằng, tôi chưa bao giờ tải xuống một cái cũ hơn kể từ khi tôi gặp vấn đề với Xcode 4.
David H

Đối với mỗi Nền tảng (iOS, watchOS, AppleTVOS, MacOS) Tôi có 2 thư mục: Tôi có "iPhoneOS.pl platform" & "iPhoneSimulator.pl platform" Tôi nên xóa cái nào? Tôi đã kiểm tra với đồng nghiệp, anh ta có chính xác cả hai nhưng không có vấn đề gì. Lý do tôi thực sự ở đây là vì vấn đề này và ai đó nói với tôi rằng vì tôi có 2 trình mô phỏng / Xcodes, nhưng nếu tôi không sửa thì tôi sẽ sửa tôi đã xóa phiên bản Xcode khác của tôi và tôi cũng đã xóa thời gian chạy 9.3 ...
Honey

1
Xin vui lòng xin vui lòng không làm điều này. Không ai được gây rối với nội dung bên trong gói Xcode.
russbishop

2

Một số người cố gắng sửa nó bằng một cách, một số thứ hai. Về cơ bản, có 2 vấn đề, nếu bạn kiểm tra chúng & giải quyết cả hai - trong 99% thì sẽ khắc phục vấn đề này:

  1. Mô phỏng thiết bị cũ đặt tại YOUR_MAC_NAME(ví dụ Macintosh) -> Users-> YOUR_USERNAME( daniel) -> Library-> Developer-> Xcode-> iOS Device Support. Để lại đó, cái mới nhất, tính đến hôm nay 13.2.3 (17B111), nhưng trong tương lai nó sẽ thay đổi. Số cao nhất (ở đây 13.2.3) của phiên bản iOS cho biết rằng nó mới hơn.

  2. Sau khi liệt kê các thiết bị của bạn Terminalbằng cách chạy xcrun simctl list devices. Nhiều người trong số họ có thể unavailable, do đó xóa chúng bằng cách chạy xcrun simctl delete unavailable. Nó cũng sẽ giải phóng một số không gian. Để chắc chắn rằng mọi thứ đều ổn, hãy kiểm tra lại bằng cách chạy xcrun simctl list devices. Bạn chỉ nên xem các thiết bị từ phiên bản mới nhất (tại đây 13.2.3) như ảnh chụp màn hình bên dưới.

nhập mô tả hình ảnh ở đây

Là một phần thưởng ít liên quan đến câu hỏi này, nhưng vẫn còn một số chỗ trống. Chuyển đến YOUR_MAC_NAME(ví dụ Macintosh) -> Users-> YOUR_USERNAME(ví dụ daniel) -> Library-> Developer-> Xcode->Archives . Bạn sẽ thấy nhiều ứng dụng được triển khai lưu trữ, hầu hết có lẽ bạn không cần tất cả chúng. Cố gắng xóa những cái này không còn được sử dụng nữa.

Sử dụng 2 phương pháp này và phương thức thưởng tôi đã có thể nhận thêm 15 GB dung lượng trên máy Mac của mình.

Tái bút Chỉ cần xóa các trình giả lập khỏi Xcode bằng cách đi tới Xcode-> Window-> Devices and Simulators-> Simulators(hoặc đơn giản là CMD+ SHIFT+ 2khi sử dụng phím tắt) và xóa nó sẽ không có ích. Bạn thực sự cần phải đi cho các bước được mô tả.


-2

Lệnh + Không gian

Nhập 'giả lập'

mở trình giả lập beta cũ mà bạn không còn cần nữa.

nhấp chuột phải vào nó trong thanh công cụ, sau đó chọn Tùy chọn> 'Hiển thị trong Finder'

Đóng ứng dụng, sau đó xóa nó khỏi thư mục.

:)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.