- vừa được xem lúc

Giảm thời gian build XCode

0 0 32

Người đăng: Nguyen The Trinh

Theo Viblo Asia

Swift là một ngôn ngữ có khả năng combile nhanh, tuy nhiên nếu không cẩn thận, đối với những dự án lớn, sử dụng nhiều thư viện thì thời gian build của chúng vẫn khá lớn, gây mất thời gian rất nhiều. Có rất nhiều lý do để giải thích cho vấn đề này. Nhưng chủ yếu là do logic code của người viết. Trình biên dịch của swift cực kỳ chậm khi phải phân tích cú pháp và biên dịch các ký tự Từ điển & Mảng.

Thật không may là những trường hợp đó là không thể tránh khỏi với những dự án có size lớn, tuy nhiên, tin tốt là chúng ta có thể config để giảm đáng kể thời gian build cho project

1) Displaying build times in Xcode

Đầu tiên, để kiểm tra thì chúng ta sẽ đo thời gian build project trước

Bật timing cho xcode

Product->Perform Action->Build With Timing Summary

Hoặc chạy trong terminal

defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

Khi build hiện như sau là thành công

Mỗi lần trước khi đo, chúng ta sẽ xoá cache(⌘+⌥+K) và derived data để đảm bảo chính xác nhất

2) Xác định mã biên dịch chậm

Xcode có tính năng cho phép bạn xác định thời gian build lâu là của đối tượng nào.Bạn thể có set giới hạn build cho đối tượng, và quan sát xem đối tượng nào đang vượt quá thời gian cho phép. Mở project’s build settings và thêm vào flag sau

1.-Xfrontend -warn-long-function-bodies=100 2 -Xfrontend -warn-long-expression-type-checking=100

Số 100 được đo bằng milisecond, nó là số nguyên bạn đặt giới hạn build, nếu vượi quá thì sẽ waring. Đó là cách để xác định đối tượng ngốn nhiều thời gian, cần cải thiện

3) Build the active architecture only

CHúng ta chỉ nên bật mode này khi đang chạy debug. Đi đến Build Active Architecture Only và đảm bảo rằng chỉ bật yes ở chế độ Debug

4) Module optimisation

Bạn có thể thay đổi để khi chạy compile, nó sẽ chạy một lần với tất cả tệp nguồn thay vì chạy một lần với mỗi tệp nguồn. Để triển khai tính năng này thì hãy thêm yếu tố -Onone only in the debug configuration of Other Swift Flags . Bên dưới build setting. Bạn cũng sẽ cần đặt Mức tối ưu hóa thành Nhanh chóng, Tối ưu hóa toàn bộ mô-đun trong cài đặt xây dựng gỡ lỗi của mình.

Nếu bạn sử dụng CocoaPods, bạn có thể tối ưu hóa tất cả các phụ thuộc của mình bằng cách thêm phần sau vào cuối Podile của bạn.

post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| if config.name == 'Debug' config.build_settings['OTHER_SWIFT_FLAGS'] = ['$(inherited)', '-Onone'] config.build_settings['SWIFT_OPTIMIZATION_LEVEL'] = '-Owholemodule' end end end
end

5) Third party dependencies

Thư viện bên thứ 3 phổ biến nhất chính là CocoaPods, nó dễ sử dụng tuy nhiên thì đó ko phải là lựa chọn tốt nếu bạn muốn cải thiện thời gian build. Sự thay thế cho nó chính là Carthage, tuy khó sử dụng hơn nhưng sẽ tiết kiệm thời gian cho bạn

6) Xcode has a new build system

Trong Xcode 9, Apple đã giới thiệu một hệ thống xây dựng mới. Tại thời điểm viết bài, đây chỉ là bản xem trước và không được bật theo mặc định. Một trong những lợi ích chính của hệ thống xây dựng mới là thời gian xây dựng nhanh hơn.

Để sử dụng hệ thống xây dựng mới, bạn có thể bật nó trong Menu -> Workspace Settings

Từ menu này, bạn sẽ có thể chọn hệ thống xây dựng mới và giảm thời gian biên dịch mã Swift của bạn.

7) Enable concurrency when building

Trong Xcode 9.2, Apple đã giới thiệu một tính năng thử nghiệm cho phép Xcode chạy song song các tác vụ xây dựng Swift. Theo mặc định, tính năng này không được bật và bạn sẽ cần phải tự bật nó từ dòng lệnh.

defaults write com.apple.dt.Xcode BuildSystemScheduleInherentlyParallelCommandsExclusively -bool NO

Options này có thể giảm đến tối đa 40% thời gian build. Tuy nhiên nếu máy bạn có ít RAM thì nó có thể gây chậm hơn. Nếu là như vậy thì chúng ta có thể tắt đi

defaults delete com.apple.dt.Xcode BuildSystemScheduleInherentlyParallelCommandsExclusively

Trên đây là 1 số tip để có thể tăng tốc độ build cho project của bạn. Chúc các bạn áp dụng thành công! Tham khảo

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 281

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

0 0 214

- vừa được xem lúc

Swift: Tạo custom phép toán tử (Operator) của riêng bạn!

Swift cho phép bạn tạo các toán tử có thể tùy chỉnh của riêng bạn. Điều này đặc biệt hữu ích khi bạn xử lý các loại dữ liệu của riêng mình. Operator Types in Swift. Có năm loại toán tử chính trong Swift.

0 0 56

- vừa được xem lúc

Chương 6 Protocol oriented programming.

Cuốn sách này là về lập trình hướng protocol. Khi Apple thông báo swift 2 ở WWDC 2015.

0 0 48

- vừa được xem lúc

Ví dụ về UIActivityViewController

Trên iOS, UIActivityViewController cung cấp giao diện thống nhất để người dùng chia sẻ và thực hiện các hành động trên văn bản, hình ảnh, URL và các mục khác trong ứng dụng. let string = "Hello, world!". let url = URL(string: "https://nshipster.com").

0 0 58

- vừa được xem lúc

Quản lý self và cancellable trong Combine.

. . Công việc quản lý bộ nhớ memory management thường trở nên phức tạp khi chúng ta thực hiện các tác vụ bất đồng bộ asynchronous vì chúng ta thường phải lưu giữ một số object nằm ngoài scope mà object được define trong khi vẫn phải đảm bảo được việc giải phóng object đó được thực hiện đúng quy trìn

0 0 41