Xcode 8 biên dịch lại mã hoàn chỉnh mỗi lần


131

Với bất kỳ thay đổi nào về mã (mặc dù tệp không ở .pch), hãy hoàn thành biên dịch lại dự án mỗi lần.


31
Tại sao điều này bị hạ cấp?! Đây là một vấn đề hợp pháp. Mất 4 phút để biên dịch mỗi lần, thu được tất cả năng suất của đội.
Josh

1
Tôi cũng nhận được vấn đề này.
AJ9

3
Bạn đang sửa đổi xib / bảng phân cảnh với một số nội dung IBDesignable?
Larme

1
Chủ đề diễn đàn liên quan của apple: forum.developer.apple.com/thread/62737 . Không có cách giải quyết vẫn còn.
ldiqual

1
Đảm bảo mở báo cáo lỗi, như được đề xuất trong diễn đàn Apple.
Leo Natan

Câu trả lời:


34

Cập nhật 2017/1/2

Vấn đề này chưa được giải quyết tại Xcode 8.2.1 (đối với dự án của tôi)

Làm thế nào để sống sót?

Code IDE: Xcode/Atom
Build: xcrun
Debug: Xcode (Control + Command + R)

Cập nhật 2016/12/17

Vấn đề này chưa được giải quyết tại Xcode 8.2.

Cập nhật 2016/12/12

Nguyên tử mã và dòng lệnh để xây dựng và gỡ lỗi là lựa chọn của tôi bây giờ. Hy vọng Apple sẽ sớm sửa lỗi hợp pháp này.

Cập nhật 2016/12/04

Vấn đề này dường như được giải quyết với Xcode 8.2 (beta 2) .

Nhưng đối với tôi nó không được giải quyết, tôi phải đối mặt với vấn đề này ngay cả khi tôi sử dụng Xcode 8.2. Bạn có thể dùng thử (tải xuống Xcode8.2 beta2 tại đây )

Xây dựng hệ thống • Xcode sẽ không xây dựng lại toàn bộ mục tiêu khi chỉ xảy ra những thay đổi nhỏ. (28892485)


Câu trả lời cũ: Đây là một công việc xung quanh:

nhập mô tả hình ảnh ở đây Tab "Xây dựng cài đặt" -> "Phương ngữ ngôn ngữ C" -> Thay đổi thành "Mặc định trình biên dịch".

Để tham khảo :

"Phương ngữ ngôn ngữ C" được đặt thành "GNU99" thay vì "Mặc định trình biên dịch". Trước đây tiêu chuẩn là GNU99 nhưng bây giờ thì không. Tại một số điểm, Xcode không di chuyển chính xác các cài đặt dự án thư viện và do đó, nó được đặt thành GNU99. Khi tôi đổi nó thành GNU99, nó sẽ ngừng biên dịch lại tất cả mã của tôi mỗi lần!


1
Càng xa càng tốt!!! Hãy cho tôi một giờ và tiền thưởng của bạn nếu nó tiếp tục.
Adam Chờ đợi

7
Argh đã trở lại để biên dịch lại mọi thứ
Adam Waite

1
Tôi có hành vi tương tự. Nếu tôi xóa dữ liệu dẫn xuất (hoặc thay đổi phương ngữ ngôn ngữ C), nó sẽ hoạt động trong khoảng 10 bản dựng. Sau đó, nó rơi trở lại để xây dựng lại mọi thứ.
blueblyn

1
Xcode 8.2 (beta 2) hoạt động trong 10 bản dựng sau đó xây dựng lại mọi thứ từ đầu, nhưng vẫn tốt hơn bản dựng trước.
Markus

3
Thật không may, vấn đề vẫn tồn tại trong Xcode 8.3 beta 2 (ít nhất là đối với chúng tôi). Không có cải thiện đáng chú ý có thể được đo lường trong dự án của chúng tôi.
Kasper Munck

20

Chuyển đến Sản phẩm -> Lược đồ -> Chỉnh sửa lược đồ. Chọn Xây dựng trong cột bên trái và bỏ chọn " Tìm phụ thuộc ngầm "

Nhưng cờ này vẫn được kiểm tra khi bạn xây dựng dự án lần đầu tiên ..


@Josh, bạn đang sử dụng nhiều dự án trong dự án của bạn (ví dụ: tiểu dự án hoặc bao gồm). Và bạn có chắc chắn bằng cách nhìn vào đầu ra xây dựng của bạn rằng nó thực sự được xây dựng lại mọi thứ?
Di động Ben

3
Đây là một không gian làm việc cơ bản với cocoapods và dự án chính. CocoaPods vẫn được xây dựng, nhưng dự án chính sẽ xây dựng lại mọi tệp; xem đầu ra xây dựng và chắc chắn tất cả hơn 100 tập tin xây dựng lại.
Josh

1
Cập nhật: có vẻ như giải pháp này hoạt động đối với một vài bản dựng sau khi thực hiện, tuy nhiên, việc dọn dẹp toàn bộ dự án và xây dựng lại cũng vậy. Tuy nhiên, đến lần xây dựng lại lần thứ 2-8, nó bắt đầu biên dịch lại mọi thứ một lần nữa. Có ý kiến ​​gì không? Ngoài bực bội.
Josh

Điều này không hoạt động, ít nhất là không với không gian làm việc của Cốc Cốc. Mọi thứ được xây dựng, mọi lúc. Siêu khó chịu, đặc biệt là vì Apple đã có nhiều năm để khắc phục vấn đề này.
Womble

7

Khắc phục cho tôi chỉ là đóng bảng phân cảnh, tôi đã mở tệp nguồn với trình soạn thảo được hỗ trợ và tệp bảng phân cảnh cũng được mở (đóng bảng phân cảnh --- vì tôi không thực hiện bất kỳ thay đổi nào đối với nó) đã xóa tất cả các biên dịch không cần thiết


1
Ha nó có thể rất dễ dàng :)
manody

5

CẬP NHẬT

Cải tiến lớn nhất tôi có thể thực hiện là mô đun hóa dự án của mình. Cụ thể mô đun hóa lớp ORM được sử dụng trong hầu hết các lớp khác. Bằng cách di chuyển mã đó vào một mục tiêu riêng trong dự án của tôi và nhập nó dưới dạng một mô-đun, tôi có thể cải thiện đáng kể thời gian biên dịch. Xcode không còn quyết định biên dịch lại các tệp không cần thiết khi tôi xây dựng.

Bây giờ tôi sử dụng phương pháp biên dịch tệp đơn để xây dựng gỡ lỗi tăng nhanh.

Có một số đề xuất tốt khác trong liên kết này bao gồm tái cấu trúc mã, https://medium.com/rocket-fuel/optimizing-build-times-in-swift-4-dc493b1cc5f5

Vẫn là một vấn đề thường xuyên đối với tôi với Xcode 9. Giống như nhiều bạn đang làm việc trong một dự án 4 / cocoapods swift lớn với nhiều tệp nguồn và biên dịch lại mỗi tệp mỗi lần gây phẫn nộ.

Cho đến nay tôi đang nhận được kết quả tốt nhất với các cài đặt sau. Tôi đề nghị bạn hãy dùng thử và xem nó hoạt động như thế nào với bạn.

  • Lược đồ -> Xây dựng -> "Tìm phụ thuộc tiềm ẩn" = TRUE
  • Xây dựng cài đặt -> Tối ưu hóa thời gian liên kết = Tăng dần
  • Xây dựng cài đặt -> Mức tối ưu hóa (Gỡ lỗi) = Không [-OO]
  • Xây dựng cài đặt -> Mức tối ưu hóa (Phát hành) = Nhanh nhất, nhỏ nhất [-Os]
  • Xây dựng cài đặt -> Tăng chia sẻ tiêu đề được biên dịch sẵn = CÓ
  • Xây dựng cài đặt -> Kích hoạt chưng cất tăng dần = CÓ

Đã thêm cài đặt bản dựng do người dùng xác định tùy chỉnh,

  • Xây dựng cài đặt -> HEADERMAP_USERS_VFS = CÓ

Lưu ý: Tôi không có cài đặt do người dùng xác định tùy chỉnh để tối ưu hóa toàn bộ mô-đun.


3

Tôi đã thay đổi một vài điều với mã của tôi về tiêu đề tiền tố dường như đã khắc phục vấn đề này. Tôi không biết ai thực sự đã lừa, nhưng tôi sẽ chia sẻ tất cả với hy vọng rằng nó sẽ giúp được người khác ngoài kia. Nếu bạn không có bộ tiêu đề tiền tố, thì tôi đoán đây không phải là vấn đề (hoặc vấn đề là nhiều mặt).

  1. Xóa mọi nhập từ tiêu đề tiền tố là các tệp khỏi thư mục sản phẩm được xây dựng để bạn có thể thay đổi cài đặt bản dựng cho phần này ("Tiêu đề được biên dịch trước sử dụng tệp từ thư mục bản dựng") thành "Không". Hãy chắc chắn rằng nó không được nhập gián tiếp thông qua nhập khẩu khác là tốt.
  2. Xóa mọi nhập từ tiêu đề tiền tố sử dụng các mô-đun Clang (thư viện hoặc khung có tệp module.modulemap trong thư mục Tiêu đề của chúng, để bạn có thể viết mã như @import MyModule). (Đối với tôi, bước này và bước 1 là một và giống nhau.)
  3. Đặt cài đặt bản dựng để chia sẻ tiêu đề tiền tố thành "Có". (Tôi không nghĩ rằng điều này là cần thiết và nó không có tác dụng gì trong dự án của riêng tôi. Tôi chỉ nói điều này vì tôi đã thay đổi nó vì tôi sẵn sàng thử bất cứ điều gì. :))
  4. Thoát Xcode và xóa thư mục DeruredData / ModuleCache của bạn (được định cấu hình ở ~ / Library / Developer nếu tôi nhớ chính xác).

Nếu điều đó vẫn không hoạt động, bạn có thể thử xóa thêm một số nhập từ tiêu đề tiền tố của bạn. Có thể có thứ gì đó vấp ngã ...


3

Có vẻ như họ đang tích cực làm việc với nó theo https://forums.developer.apple.com/thread/62737 nhưng một cách giải quyết là thêm

HEADERMAP_USES_VFS = YES

trong cài đặt bản dựng của mục tiêu của bạn (Dự án -> Mục tiêu -> Cài đặt bản dựng -> Xác định người dùng).

Giải pháp này hoạt động mọi lúc đối với tôi hôm nay, sau khi không có giải pháp nào khác hoạt động ổn định trong tháng qua.

EDIT: Đôi khi vẫn biên dịch lại mọi thứ, mặc dù có vẻ như nó được thực hiện ít thường xuyên hơn với cài đặt này được xác định.


Tôi cũng đã thêm giá trị này, thời gian xây dựng nhanh hơn nhưng nó không giải quyết được việc xây dựng gia tăng. Tôi đã thay đổi Trình biên dịch Swift - Tạo mã / Gỡ lỗi thành Nhanh, Tối ưu hóa toàn bộ mô-đun ... là kết quả tốt nhất cho đến thời điểm hiện tại
Antonio Junior

tôi thậm chí không thể tìm thấy Người dùng Xác định)
David Seek

2
@DavidSeek của nó ở dưới cùng của Cài đặt bản dựng
Laser Hawk

1
nếu bạn không nhìn thấy thì hãy đọc meandmark.com/blog/2011/03/xcode-4-accessing-build-sinstall
Laser Hawk

3

Kiểm tra tất cả các mã của bạn trên các @IBDesignablechỉ thị trong trường hợp cụ thể của tôi về dự án xây dựng Xcode vì tôi có một số lượt xem trên bảng phân cảnh có chứa các @IBDesignablethuộc tính này trong đó. Điều thứ hai là tôi cũng mở bảng phân cảnh của mình trong cửa sổ riêng biệt (không phải tab), đó là đẩy Xcode của tôi tạo các bản dựng cho tất cả các trình giả lập mãi mãi.


Chúng tôi sử dụng khá nhiều @IBDesignablechỉ thị ... có điều gì đặc biệt mà chúng tôi nên tìm kiếm không?
Stan

Tôi nghĩ rằng có thể tìm thấy chúng bằng cách loại trừ từng cái một và kiểm tra kết quả, trường hợp của tôi chỉ là 2 trong số các chỉ thị @IBDesignable trong toàn bộ dự án.
ua24

2

Madhuri Mane hoàn toàn đúng về điều này. Để thêm một chút rõ ràng hơn, một số điểm quan trọng cần lưu ý:

Điều này CHỈ áp dụng nếu bạn có các phụ thuộc ngầm định vào các thư viện / khung mà mục tiêu của bạn dựa vào.

Nếu "Tìm phụ thuộc ngầm định" bị tắt:

Kết quả: Thư viện sẽ không được xây dựng trước khi xây dựng mục tiêu ứng dụng. Mục tiêu ứng dụng không xây dựng được.

Khắc phục: Để đảm bảo rằng kịch bản thứ hai không xảy ra, bạn phải thêm các mục tiêu cần thiết vào danh sách mục tiêu và sắp xếp chúng một cách chính xác.

Nguồn và đọc thêm về chủ đề: https://pewpewthespells.com/blog/managing_xcode.html#scheme-action

Bây giờ nếu toàn bộ dự án của bạn được đặt trong một mục tiêu và mất 4 phút để biên dịch, bạn sẽ không thể làm gì nhiều về điều này ngoại trừ chia nó thành các khung để tận dụng lợi thế của phần trên hoặc tìm ra nơi biên dịch bị trễ. Nếu bạn đang sử dụng một cái gì đó như PaintCode hoặc có nhiều đoạn mã UIKit nhanh chóng, hãy đổi nó thành Objective-c, nó biên dịch nhanh hơn nhiều


2

Chuyển đến cài đặt bản dựng của mục tiêu và đặt Defines Modulethành Yes.

Làm việc cho tôi cho một vài bản dựng, quá sớm để khẳng định đây là một cách giải quyết dứt khoát, nhưng ít nhất chúng tôi đang cố gắng.


2

Apple đã phát hành phiên bản beta mới của Xcode vào ngày hôm qua (14/11)

Xcode 8.2 beta 2

Và vấn đề này đã được đánh dấu là đã được giải quyết trong ghi chú phát hành.

Xây dựng hệ thống

• Xcode sẽ không xây dựng lại toàn bộ mục tiêu khi chỉ xảy ra những thay đổi nhỏ. (28892485)

Đó là làm việc cho tôi. Tốc độ xây dựng đã trở lại như bình thường. Mọi người đang đối mặt với vấn đề này, nên thử xem!

https://developer.apple.com/doad/


2

Vui lòng vào cài đặt bản dựng của dự án và thay đổi "Phương ngữ ngôn ngữ C".

"Phương ngữ ngôn ngữ C" được đặt thành "GNU99" thay vì "Mặc định trình biên dịch" khi bạn cập nhật phiên bản xcode. Tại một số điểm, Xcode không di chuyển chính xác các cài đặt dự án thư viện và do đó, nó được đặt thành GNU99. Điều này sẽ giải quyết vấn đề


1

Nếu bạn đã thực hiện các thay đổi đối với tệp Swift bắt đầu xây dựng ứng dụng, hãy chuyển đến tab cuối cùng và nhấp vào nhật ký xây dựng, trong giai đoạn "Kiểm tra phụ thuộc", dừng quá trình xây dựng và chạy lại. Trong lần chạy thứ hai, nó chỉ nên xây dựng các tệp bạn đã sửa đổi. Nếu được thực hiện chính xác, tôi đã tìm thấy nó hoạt động mọi lúc. Không cần phải thực hiện bất kỳ thay đổi thiết lập dự án.

Điều này dường như là một lỗi trong Xcode.

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

Nếu bạn thấy ứng dụng đang thực hiện quá trình xây dựng đầy đủ thì hãy dừng quá trình xây dựng và thử lại thủ thuật này.

Nếu bạn không thực hiện thay đổi mã nào, hãy sử dụng CMD + CTRL + R để chạy mà không cần xây dựng ứng dụng có trình gỡ lỗi. Sẽ không xây dựng ứng dụng nhưng có thể giúp tiết kiệm thời gian không cần thiết.


Điều này thực sự hoạt động, nhưng đôi khi XCode sẽ thất bại với mã 1 và bạn sẽ phải tạo một bản dựng sạch. Đó là một cơn ác mộng
Antonio Junior

Có các kịch bản khác trong đó Xcode sẽ luôn luôn xây dựng đầy đủ. Tôi đã tìm thấy nếu bạn sửa đổi tệp .h có trong tiêu đề bắc cầu, nó sẽ xây dựng lại tất cả các tệp Swift. Có thể có các kịch bản khác không liên quan đến lỗi Xcode.
Vlad

Có các kịch bản trong đó thay đổi duy nhất là đổi tên hàm hoặc thuộc tính mới được thêm vào một lớp / cấu trúc hiện có dẫn đến việc xây dựng lại toàn bộ.
Antonio Junior

Tham khảo câu hỏi / câu trả lời này, chủ đề này là một bản sao của câu hỏi này: Có giải pháp hoạt động tốt hơn: stackoverflow.com/questions/39456223/ Kẻ
Vlad

1

Vấn đề từ phía tôi đã được khắc phục bằng cách áp dụng bỏ chọn cho giải pháp "Tìm phụ thuộc ngầm".

NHƯNG hãy nhớ nếu bạn đang sử dụng cocoapods, để áp dụng cài đặt này cho dự án pod của bạn bằng cách chọn nó từ

Sản phẩm -> Lược đồ -> Pods - "yourProjectName"

cũng áp dụng trong:

Sản phẩm -> Lược đồ -> "yourProjectName"

Nó giúp tôi, vì vậy tôi hy vọng gợi ý này sẽ giúp người khác.

Cảm ơn


1

Cố gắng: 1. Điều hướng đến Dự án 2. Nhấp vào Cài đặt bản dựng 3. Kiểm tra xem Tối ưu hóa được đặt thành Không để gỡ lỗi. 4. Nhấp vào Thêm cài đặt do người dùng xác định 5. Đặt SWIFT_WHOLE_MODULE_OPTIMIZATION thành CÓ.

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


Không có gì để làm việc nó vẫn biên dịch khi tôi viết một lá thư.
Chandni

-2

để giảm bớt thời gian biên dịch của xcode, có thể sử dụng IRAMDISK (Đĩa bộ nhớ ảo). Rất hữu ích và hiệu quả có nghĩa là để giảm thời gian biên dịch.

Cũng có thể sử dụng để tăng tốc ứng dụng thường xuyên sử dụng.

tham khảo liên kết sau để tải xuống và sử dụng: http://iramdisk.findmysoft.com/mac/


Điều này sẽ không tăng tốc độ biên dịch nếu bạn đã có đĩa SSD.
Jano
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.