2016-10-05 27 views
9

Vấn đề là khi xây dựng một ứng dụng Swift trong XCode 8, file nguồn được biên dịch một cách nhanh chóng, nhưng thư viện sao chép Swift chuẩn mất bánh - giai đoạn có thể chạy trong vài phút (thường là toàn bộ xây dựng là khoảng 4-5 phút, trường hợp xấu nhất đã được hào phóng hơn 10 phút - được sử dụng để được dưới một phút).XCode 8.0 ứng dụng xây dựng ultraslow

Ngoài ra, giai đoạn xuất của lưu trữ chậm một cách đau đớn, đôi khi mất gần nửa giờ (một lần nữa, được sử dụng khá nhanh).

Tôi đã xóa web để tìm câu trả lời trong nhiều ngày, cài đặt lại XCode vô số lần, thử công cụ Swift mới, thử nghiệm bật/tắt Ổ đĩa iCloud của Sierra (thư mục gốc vẫn cần ẩn), đã thử mọi công trình thiết lập mà bất kỳ ai, và mẹ của họ, đã đề nghị, thực hiện nhiều dự án trống mới, và mất tất cả hy vọng ...

Vì vậy, câu hỏi của tôi là, làm thế nào tôi có thể làm cho nó bình thường?

EDIT: Tôi cũng có của Apple phím ID (cùng số lượng quán rượu-s và priv-s, và các chứng chỉ kèm theo) trong tôi Mac của Keychain - là có một cơ hội vấn đề này có liên quan với nó? Mất một thời gian để đi qua chúng và tìm thấy một trong những chính xác để ký kết với?

+0

Tôi không biết điều này có áp dụng cho bạn hay không, nhưng bạn nên tránh các thời gian biên dịch chậm: trong codebase của bạn, tìm các biểu thức "phức tạp" (như lông lót một lớp) và chia nhỏ thành nhiều biểu thức sử dụng các biến tạm thời.Và nếu bạn có từ điển literals, giúp trình biên dịch bằng cách nói rõ loại của bạn (thường là tốt hơn để sử dụng suy luận kiểu nhưng trong trường hợp này nó tốt hơn để cung cấp cho loại) nó sẽ làm giảm nhiệm vụ của trình biên dịch. – Moritz

+0

Cảm ơn lời khuyên Eric, chúng luôn hữu ích. Tôi đang sử dụng [BuildTimeAnalyzer] (https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode) để kiểm tra kỹ mã của tôi, để không có công cụ biên dịch mã nguồn dài (dài nhất là 61.8ms và có tổng cộng ~ 20 hàm biên dịch dài hơn 10 mili giây). –

+0

Điều này hoạt động trên Xcode 8.3 swift 3.1 - http://stackoverflow.com/a/40497873/1890317 –

Trả lời

11

... Vì vậy, cuối cùng tôi bị gãy và xóa tất cả các phím Apple ID của tôi (trừ 1 cặp khóa) từ Keychain của tôi (đã sợ hãi về việc phá vỡ mọi thứ). Bây giờ tất cả mọi thứ được xây dựng một cách nhanh chóng /thường và tôi cuối cùng đã có thể hạnh phúc một lần nữa ...

Chỉ cần nhắc lại - chắc chắn rằng bạn không có phím trùng lặp trong Keychain.

+1

có 700 + khóa trùng lặp - xóa tất cả và mọi thứ bắt đầu hoạt động chính xác (và nhanh chóng). xcode cung cấp các phím được yêu cầu tự động sau khi chúng đã được gỡ bỏ. khá thất vọng vì xcode đã rơi vào tình huống kỳ lạ đó và lãng phí quá nhiều thời gian của tôi (và tôi cho rằng rất nhiều nhà phát triển khác) – aporat

+0

@Mikk Rätsep Bạn có nghĩa là bạn đã xóa tất cả các khóa Apple ID, ngoại trừ 1 khóa trả tiền)? 1 cặp chìa khóa này là gì? – bibscy

+0

@bibscy Điều đó có nghĩa là khi tôi có, ví dụ, 200 khóa Apple ID riêng tư và 200 khóa Apple ID công khai - thì tôi chỉ còn lại 1 khóa riêng và 1 khóa công khai. Có nghĩa là tôi đã xóa các bản sao. –

1

Tới dự án thiết lập, sau đó Editor> Add Setting xây dựng> Add Setting User-Defined, và thêm những điều sau đây:

SWIFT_WHOLE_MODULE_OPTIMIZATION = YES 

Thêm cờ này bị bỏ sạch-xây dựng của chúng tôi lần từ 7 phút biên dịch để 65 tuổi cho một dự án nhanh chóng 40KLOC, một cách kỳ diệu. Cũng có thể xác nhận 2 người bạn đã thấy những cải tiến tương tự về dự án doanh nghiệp.

Tôi chỉ có thể giả định đây là một số loại lỗi trong Xcode 8.0 ## Nhóm ##

+0

Điều này có giống nhau không, như cài đặt ** Mức tối ưu ** trong Cài đặt * Xây dựng - Trình biên dịch Swift *? Và tiếc là điều này không có tác dụng với tôi ... có vẻ như có vấn đề với máy tính của tôi (vì những người khác có thể xây dựng dự án một cách nhanh chóng) ... có thể ai đó đã gặp phải điều này trước đây và biết cách sửa nó (ngoài định dạng v.v.) –

+0

Nó đã hoạt động một lần ... – maxisme

0

Bên cạnh việc loại bỏ các phím trùng lặp, tôi nhận thấy một sự cải thiện rất lớn trong codesign khi tôi thay đổi kiểm soát truy cập của các phím xcode để "Cho phép tất cả các ứng dụng truy cập mục này"

mở "Keychain Access", chọn " Phím "và nhấn đúp vào từng phím. trên tab "Kiểm soát truy cập", bạn sẽ có tùy chọn để chọn "Cho phép tất cả ứng dụng truy cập mục này".

+0

Kết quả tương tự có thể được thực hiện chỉ bằng cách cấp quyền truy cập vào _Xcode_ (hoặc một số ứng dụng _codesign_ mà ứng dụng có thể sử dụng) không? Cá nhân tôi không cảm thấy thoải mái khi cho phép tất cả các ứng dụng truy cập vào khóa của tôi. –

Các vấn đề liên quan