Ký hiệu trùng lặp cho nhánh kiến ​​trúc64


103

Khi tôi thử chạy Dự án Xcode của mình, nó không thành công với lỗi thông báo rằng tôi có các ký hiệu trùng lặp. Tôi đã tìm kiếm trực tuyến nơi tìm thấy các bản sao này nhưng không gặp may:

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

Bất kỳ ý tưởng làm thế nào để sửa lỗi này?


1
nó có nghĩa là bạn đã có quá nhiều BFAppLinkReturnToRefererView
Andrey Chernukha

Ngoài ra, bạn có thể muốn dọn dẹp dự án của mình một chút thay vì liên kết với các khung công tác trên máy tính để bàn của bạn. :)
picciano

Trong trường hợp của tôi, tôi đã thêm extern NSString * const tColor; trong tệp .h và NSString const * tColor = @ "# 000022"; trong hai lớp .m khác nhau.
ios_dev 19/12/17

Bạn có thể tìm thấy những gì bạn tìm kiếm ở đây stackoverflow.com/a/46678210/988941
MoOx

Câu trả lời:


65

Từ các lỗi, có vẻ như FacebookSDK.framework đã bao gồm các lớp Bolts.framework. Thử xóa Bolts.framework bổ sung khỏi dự án.


22
làm thế nào để? bạn có thể vui lòng hướng dẫn cho tôi từng bước
Imdad Ali

68

Đối với tôi, nó đã giúp chuyển cài đặt trình biên dịch "Không có khối chung" thành KHÔNG: Có vẻ khá hợp lý, cài đặt này được giải thích ở đây: GCC_NO_COMMON_BLOCKS được sử dụng để làm gì?


Bạn là người đàn ông! Vừa tạo một dự án xCode 7.3.1 mới và cài đặt mặc định là CÓ :(
Yaro

4
Tùy chọn này đã được bật cho tôi bởi cửa sổ "Cập nhật dự án lên cài đặt được đề xuất" của Xcode.
commscheck

Bạn là tốt nhất
showmyroutes

mẹo vô giá, nhưng không giúp được gì trong trường hợp của tôi! : O
Fattie 20/1218

49

Sử dụng Xcode 8, tùy chọn "Cập nhật dự án lên cài đặt được đề xuất" đã BẬT 'Không có Khối chung' cho dự án của tôi.

Chuyển nó trở lại TẮT đã khắc phục mọi thứ.


2
Cập nhật dự án lên cài đặt được đề xuất, làm cách nào để thực hiện điều đó? ý tôi là từ menu nào?
Sazzad Hissain Khan,

@SazzadHissainKhan Nó nằm trong cài đặt bản dựng của bạn.
Chuyến đi

21

Đối với tôi, do nhầm lẫn tôi đã nhập tệp dưới dạng .m không phải .h


Đó là LOL, nhưng sự thật; D
Vladimir

điều này chỉ xảy ra với tôi .. Tôi đổ lỗi cho hoàn thành mã cho everyting
user426132

21

Tôi đã làm lộn xộn các nhóm của mình trong khi hạ cấp một nhóm và tôi đã cố gắng giải quyết vấn đề với các ký hiệu trùng lặp cho kiến ​​trúc arm64 bằng cách xóa các nhóm và cài đặt lại chúng bằng:

pod deintegrate
pod install

Tôi đang sử dụng SDK Google Địa điểm, được tích hợp qua CocoPods - 3.9.0 và câu trả lời này đã khắc phục sự cố của tôi.
andrewlundy

11

Một giải pháp khác là:

Chọn Dự án -> Mục tiêu -> Giai đoạn xây dựng -> Biên dịch mã nguồn -> tìm kiếm tệp được đề cập trong dòng lỗi cuối cùng thứ 3 (Trong trường hợp của bạn là BFAppLinkReturnToRefererView.o ).

Sau đó, bạn sẽ thấy 1 hoặc 2 tệp trong kết quả tìm kiếm.

Loại bỏ một trong số chúng và biên dịch lại . Nó sẽ được biên dịch lại ngay bây giờ vì chỉ còn lại một tệp và không còn xung đột để xây dựng.

Nếu điều đó không hiệu quả, tệp có thể có lỗi trong đó và bạn nên xóa tất cả chúng rồi biên dịch lại. Nó sẽ hoạt động trở lại.


2
Câu trả lời được đánh giá rất thấp, cảm ơn sự giúp đỡ của bạn, Lukas! :)
patreu22

Không có vấn đề vui mừng nó sloved vấn đề của bạn :)

10

Khi nâng cấp lên Xcode 8, tôi nhận được thông báo nâng cấp lên các cài đặt được đề xuất. Tôi đã chấp nhận và mọi thứ đã được cập nhật. Tôi bắt đầu gặp vấn đề về thời gian biên dịch:

Biểu tượng trùng lặp cho XXXX Biểu tượng trùng lặp cho XXXX Biểu tượng trùng lặp cho XXXX

Tổng cộng có 143 lỗi. Đã đến Mục tiêu-> Cài đặt xây dựng -> Không có Khối chung -> Đặt thành KHÔNG. Điều này đã giải quyết vấn đề. Vấn đề là các dự án tích hợp có chung các khối mã và do đó không thể biên dịch nó. Giải thích có thể được tìm thấy ở đây .


9

Lỗi này xảy ra khi Trình liên kết đang cố gắng liên kết các tệp obj. Một vài lý do mà tôi có thể nghĩ ra cho lỗi này là:

  1. Hàm / Lớp trùng lặp được định nghĩa ở hai vị trí / tệp khác nhau trong dự án và chỉ một trong số chúng được cho là biên dịch cho bất kỳ biến thể nào của lệnh xây dựng. Nhưng bằng cách nào đó cả hai tệp đó đều được biên dịch trong dự án của bạn. Vì vậy, bạn cần kiểm tra các điều kiện if-else hoặc các phụ thuộc khác để thêm các tệp src vào danh sách các tệp cần được biên dịch và xóa tệp không cần thiết cho lệnh xây dựng cụ thể của bạn.

  2. Chức năng / Lớp trùng lặp được xác định vô tình tại hai vị trí / tệp khác nhau trong dự án. Bỏ định nghĩa sai.

  3. Làm sạch thư mục OBJ của bạn trước khi bạn xây dựng lại, có thể có một số tệp obj cũ trong đó từ các bản dựng trước của bạn có thể gây ra xung đột này.

Tái bút tôi không phải là chuyên gia, nhưng đây là cách tôi giải quyết vấn đề này khi tôi phải đối mặt với nó. :)


9

Nếu bạn đang chuyển sang Xcode 7 hoặc 8 và đang mở một dự án thực sự cũ, tôi đã gặp sự cố này:

trong SomeConstFile.h

NSString * const kAConstant;

trong SomeConstFile.m

NSString *const kAConstant = @"a constant";

Các phiên bản trước của trình biên dịch giả định rằng định nghĩa trong tệp tiêu đề là không rõ ràng và do đó, bao gồm SomeConstFile.h ở khắp nơi là tốt.

Bây giờ bạn cần phải khai báo rõ ràng những khuyết điểm này là extern:

trong SomeConstFile.h

extern NSString * const kAConstant;

1
Cảm ơn vì điều đó! Đang vật lộn với sự cố với tệp constants.h mà tôi đang tạo lol
Sung Min Kim

1
Cảm ơn bạn đã trả lời tôi cũng đã phải đối mặt với cùng một vấn đề và câu trả lời của bạn làm việc cho tôi ...
reetu

1
Cảm ơn, tôi đã đấu tranh cho vấn đề này cho 3-4 giờ qua
Sumit Kumar Saha

9

Dưới đây Patch làm việc cho tôi .. :)

Step 1: Go to TARGETS -> Build Settings -> No Common Blocks -> No

Step 2: Go to TARGETS -> Build Settings -> enable testability -> No

Đặt nó trở lại NO đã giải quyết được vấn đề!


2
Bước 2: Giải quyết vấn đề của tôi. Cảm ơn bạn :)
Dorald

2

Chà, đôi khi sử dụng SDK như FB hoặc các Thư viện như Vuforia hoặc GoogleAnalytics, việc thêm các dự án mẫu có thể gây ra sự cố rằng chúng đã bao gồm các Khung công tác và như vậy, vì vậy bạn phải đảm bảo không lặp lại các ký hiệu bạn thêm theo cách thủ công khi chúng đã có bao gồm trong các mẫu


2

Đối với tôi, vấn đề là kiểu tạo const, hoạt động tốt cho đến iOS8 này .. Tôi có một vài dòng như sau:

int const kView_LayoutCount = 3;

trong tệp .h của tôi. Sáu dòng như vậy dẫn đến 636 tệp trình liên kết sau khi các khối chung được đặt thành KHÔNG. (14k + nếu CÓ). Đã chuyển các dòng thành .m sau khi loại bỏ .h của khai báo giá trị và biên dịch là tốt.

Hy vọng điều này sẽ giúp những người khác!


2

Trong trường hợp của tôi, lý do quá ngu ngốc:

Tôi đã có một tệp Constant.h nơi tôi đã xác định các macro. Tôi đã nghĩ đến việc làm NSString ở đó. và đã làm điều này:

NSString const *kGreenColor = @"#00C34E";

điều này gây ra sự cố trùng lặp biểu tượng cho kiến ​​trúc arm64 và lệnh Trình liên kết không thành công với mã thoát 1. Loại bỏ dòng const NSString đã làm việc cho tôi.


2

kiểm tra tệp bao gồm của bạn, tôi gặp sự cố này vì tôi đã vô tình #imported "filename.m" thay vì "filename.h", tính năng tự động sửa (tab) đặt "m" không phải "h".


Cảm ơn bạn rất nhiều, tôi không nhận ra mình đã phạm phải sai lầm này, đã chiếm hết thời gian của tôi. Cảm ơn một lần nữa 👍
Supertecnoboff

1

Từ các lỗi, nó sẽ xuất hiện bất kỳ Lớp nào xuất hiện nhiều lần. Tìm và xóa các Lớp đó nó sẽ hoạt động.

Đang tạo tệp AppDelegate.h và .m tạo nhiều lần. Vì vậy, lỗi này sẽ xảy ra.Cuối cùng, tìm và loại bỏ các lớp mà nó hoạt động tốt đối với tôi.


1

để giải quyết vấn đề này, hãy chuyển đến giai đoạn Xây dựng và tìm kiếm về tệp trùng lặp như (facebookSDK, Uniformads) và xóa (tệp mở rộng.o) sau đó xây dựng lại.


0

Đối với tôi, tôi đã tạo một phương thức được gọi sampleMethodtrong ViewController_A và cũng tạo phương thức tương tự trong ViewController_B, Nó gây ra cho tôi lỗi này, sau đó tôi đã thay đổi tên phương thức trong ViewController_B thànhsecondSampleMethod . Nó đã sửa lỗi.

Có vẻ như một tính năng Tốt để giảm mã và không để trùng mã ở nhiều nơi.

Tôi đã thử thay đổi các khối Không chung từ Có thành Không, sau đó bật khả năng kiểm tra từ Có thành Không. Nó không hoạt động. Tôi cũng đã kiểm tra các tệp trùng lặp trong các giai đoạn xây dựng, nhưng không có tệp nào trùng lặp.


0

Tôi gặp sự cố này vì tôi đã lười biếng xác định một biến trong .m của mình bên ngoài một phương thức, sau đó trong một tệp .m khác, tôi đang xác định một biến khác có cùng tên bên ngoài một phương thức. Điều này đã gây ra sự cố trùng lặp tên biến toàn cầu.


0

Vấn đề đối với tôi là tôi đã bao gồm một khung theo cách thủ công nhưng sau đó cũng đưa vào cùng một khung đó trong CocoaPods mà không biết tôi đã làm như vậy. Sau khi tôi xóa cái này hay cái kia, sự cố đã biến mất



0

Tôi đã có thể giải quyết lỗi này cho biết "158 ký hiệu trùng lặp cho kiến ​​trúc armv7, 158 ký hiệu trùng lặp cho kiến ​​trúc arm64" --- Nếu đây là những gì bạn cũng nhận được, thì có nghĩa là bạn đang cố gắng biên dịch một tệp đang nhập hoặc kế thừa một khung hoặc thư viện tĩnh có tham chiếu đến mã hoặc tệp C ++. Một cách dễ dàng để xử lý điều này là thay đổi phần mở rộng của tệp .m của bạn thành .mm. Đây là cách nó được xử lý nếu bạn đang sử dụng Objective C, nhưng không chắc chắn về Swift.

Cũng trong cài đặt bản dựng của bạn - bạn có thể cập nhật "cờ trình liên kết khác" thành -lc ++


0

Nếu ai đó đang thử nghiệm điều này hoạt động trên Flutter, đừng cố gắng pod deintegrate, pod init.

Cách tôi giải quyết là chạy flashing clean, flashing run -d [Thiết bị iOS]

Hy vọng có thể giúp ai đó.


0

Làm ơn Thay đổi cài đặt.

Bước 1: Đi tới MỤC TIÊU -> Cài đặt xây dựng -> Không có khối chung -> Không

Bước 2: Vào TARGETS -> Build Settings -> bật khả năng kiểm tra -> Không

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.