Lỗi biên dịch Xcode 12 (Trong khi chạy với simulator iOS 14)

Tram Ho

Việc xây dựng một dự án lớn trên Xcode Phiên bản 12.0.1 (12A7300) với một simulator được chọn (iOS 14), gây ra nhiều lỗi khác nhau, cho dù cùng một dự án có hoạt động hoàn hảo với Xcode 11.x và các phiên bản thấp hơn hay không.

Lưu ý: Dự án đã thử nghiệm là một dự án lớn có nhiều thư viện cocoapods phổ biến của bên thứ ba [Swift + objC] AFNetworking, Firebase, RN Modules, Notification Extension target, v.v.

Một số lỗi như sau:

  • No such modules (import installed pods)
  • Cocoapods post-build step with the script they install issue -> Pods/Target Support Files/Pods-All-Apps-XXX/Pods-All-Apps-XXX-frameworks.sh: line 141: ARCHS[@]: unbound variable
  • ‘ObjCheaderFile.h’ file not found. (ObjC Headers in bridging file)

Đột nhiên những lỗi này Tại sao?

Bây giờ để hiểu điều này, tôi muốn bạn xem cập nhật quan trọng từ Ghi chú phát hành Xcode 12:

Dưới đây là 2 lý do chính dẫn đến các lỗi phát sinh do thay đổi này:

  1. Hỗ trợ kiến trúc arm64 & và Xcode 12 Phiên bản tương thích vẫn chưa được cung cấp bởi nhiều thư viện bên thứ ba phổ biến (Như Firebase, AFNetworking, v.v.).

  1. Vì cài đặt Kiến trúc hợp lệ(Valid Architectures) bị xóa trong Xcode 12, vì vậy project trong Xcode 12 sẽ tự động tạo macro VALID_ARCHS trong User-Defines và macro này sẽ làm cho quá trình xây dựng không thành công.

Các bước để sửa những lỗi này:

Bước 1: Bạn phải loại trừ arm64 cho kiến trúc giả lập cả khỏi Project của bạn và Pod.

  • Để làm điều đó cho Project, hãy điều hướng đến Build Settings của dự án và thêm “Any iOS Simulator SDK” nào có giá trị arm64 bên trong “Excluded Architecture”. (Lưu ý: Project, không phải Target. Thêm vào Project sẽ tự động thêm cài đặt vào tất cả Target của nó)

  • Bây giờ, bạn phải thực hiện tương tự đối với dự án Pod cho đến khi tất cả các nhà cung cấp cocoapods hoàn thành việc thêm phần sau vào Podspec của họ.

Bước 2: Bạn nên làm là xóa hoàn toàn VALID_ARCHS khỏi dự án của mình (Main Project & Pod Project) và đảm bảo Kiến trúc (ARCHS) được đặt thành Standard Architectures (ARCHS_STANDARD) chứ không phải một thứ gì đó cụ thể (trừ khi bạn thực sự biết chính xác lý do tại sao bạn ‘không sử dụng ARCHS_STANDARD).

[image 7]

Vui lòng đảm bảo rằng bạn đã làm theo cả hai bước, sau đó Clean project và rebuild lại nó, hy vọng các bước này hiệu quả cho tất cả.

Tuy nhiên, trong trường hợp lỗi không được khắc phục bằng cách thực hiện các Bước trên, thì bạn cần thực hiện thêm các bước sau:

  • Bạn cần phải Nâng cấp tất cả các Pod của mình lên phiên bản mới nhất hiện có (Đoạn mã bên dưới dành cho sự trợ giúp của bạn) -> Clean Project -> Re-Build.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo