2014-11-17 24 views
17

Tôi có vùng làm việc XCode được tạo bằng XCode 6.0.1. Nó chứa 2 thư viện (Swift) và một ứng dụng iOS (Swift) phụ thuộc vào 2 thư viện đó. Tôi đã thiết lập ổn định cho phép tôi chạy ứng dụng iOS trên cả iPhone và trình mô phỏng: 2 dự án thư viện đã được thêm vào là Các tệp nhị phân được nhúng (xem ảnh) của ứng dụng.Không thể thêm tệp nhị phân được nhúng (dự án khác) vào dự án phụ thuộc trong XCode

Bây giờ, tôi có XCode 6.1. Gần đây, tôi đã xóa thư mục DerivedData trong thư mục ~/Library/Developer/Xcode trong khi XCode đang chạy. Sau đó không gian làm việc của tôi không hoạt động - ứng dụng iOS sẽ không biên dịch được và tôi gặp lỗi liên kết nói rằng nó không thể tìm thấy các dự án thư viện.

Tôi đã cố gắng giải quyết bằng cách xóa 2 thư viện của mình khỏi Thư viện được nhúng của dự án ứng dụng - và tôi không thể thêm lại chúng. Nhấp vào nút + dưới Binaries Embedded trong cài đặt dự án sẽ hiển thị các dự án không gian làm việc một cách chính xác nhưng việc lựa chọn và bổ sung dự án thư viện của tôi không thêm chúng vào danh sách các Binaries Embedded. Tôi đã giải quyết lỗi liên kết bằng cách tạo không gian làm việc mới. Các ứng dụng biên dịch nhưng làm thế nào nó liên kết các thư viện là một bí ẩn đối với tôi: Họ không có trong danh sách Nhúng Binaries hoặc Các khung và thư viện được liên kết không có trong Đường dẫn tìm kiếm khung. Dường như không có liên kết nào giữa ứng dụng và các thư viện mà nó cần (và rõ ràng là khi nó biên dịch), ngoại trừ các dự án thư viện nằm trong cùng một không gian làm việc.

Tại sao tôi không thể thêm dự án thư viện vào Thư viện được nhúng? Có phải bình thường trong XCode 6.1 rằng các dự án phụ thuộc chỉ biên dịch và được nhúng vào một ứng dụng mà không được liệt kê hoặc liên kết ở bất kỳ đâu?

enter image description here

+1

Bạn đã bao giờ tìm ra điều này chưa? Tôi gặp vấn đề tương tự. –

+1

@ HobbestheTige Sau đó, tôi sẽ đề nghị bạn upvote câu hỏi;) Không, tôi đã không giải quyết được nêu ra, nhưng sẽ thiết lập một tiền thưởng trên này trong vài ngày tới. Ngoại trừ nó là một bí ẩn và tôi không thể nhìn thấy khuôn khổ trong "nhúng nhị phân" Tôi cũng nhận được cảnh báo biên dịch mỗi khi tôi biên dịch. Vì vậy tôi chắc chắn muốn giải quyết nó. – drasto

+1

Xem: [Xcode sẽ không thêm “Nhúng nhị phân” sau khi xóa “DerivedData”] (http://stackoverflow.com/q/27782284/89035) – rjstelling

Trả lời

-3

Có lẽ vì khuôn khổ của bạn là một dự án riêng biệt và không phải là một mục tiêu riêng biệt. Hãy thử xem cẩn thận Session 416: Building a Modern Framework vào khoảng phút 34-36. Nó sẽ cho bạn thấy làm thế nào để thiết lập nó một cách chính xác.

này làm cho nó một chút rắc rối nếu bạn muốn chia sẻ một khuôn khổ qua nhiều dự án bằng cách

+0

Đúng, chúng không phải là các mục tiêu riêng biệt, chúng là các dự án riêng biệt. Nhưng đó chính xác là cách tôi muốn nó (ngoài ra nó còn hoạt động trước đó). Các khung công tác thực sự được phát triển riêng biệt và chia sẻ giữa các dự án. Bạn có thể nghĩ về chúng như các thư viện bên ngoài mà thậm chí có thể được biên dịch (không có các nguồn có sẵn cho tôi). Tôi chỉ có chúng trong cùng một không gian làm việc cho convinience như tôi tìm thấy một lỗi trong các khuôn khổ theo thời gian vì vậy tôi không phải swich không gian làm việc. Nếu bạn xem "Phiên 233: Chia sẻ mã giữa iOS và OS X", họ sử dụng cùng một thiết lập như tôi đang cố gắng để có được. – drasto

+0

Tôi đồng ý với bạn và muốn làm tương tự –

5

Ok, tôi chạy vào cùng một vấn đề như bạn. Sau khi xóa dữ liệu có nguồn gốc, tôi không thể liên kết lại các tệp nhị phân của mình. Tôi nghĩ lý do là vì dữ liệu có nguồn gốc là nơi các tập tin nhị phân được ghi vào và liên kết ngược lại trong dự án của bạn.

Những gì tôi đã làm để giải quyết là chọn Khung của tôi làm mục tiêu xây dựng của tôi. Sau khi xây dựng nó, mục tiêu khung chuyển từ đỏ sang đen. Tôi có thể nhìn thấy trong ảnh chụp màn hình của bạn nó là màu đỏ, có nghĩa là nó đã không được biên dịch thành một nhị phân và được viết trên đĩa.

Một khi tôi đã làm điều này, tôi đã có thể liên kết lại khung để dự án của tôi vì đã có một tham chiếu đến nó trên đĩa. Hi vọng điêu nay co ich!

+0

Tôi không thể cảm ơn đủ cho bài đăng này. – slobodans

+1

Yup, điều này đã làm các trick. Một lưu ý quan trọng là bạn cần phải xây dựng khung cho "Thiết bị iOS" thay vì cho một thiết bị mô phỏng cụ thể như iPhone 6. –

+0

Không cần phải xóa các dự án khỏi không gian làm việc như @rjstelling đề xuất. Chỉ cần xây dựng lại các khung công tác bằng thiết bị iOS (Chung). –

12

Đây là một bản tóm tắt các câu trả lời của tôi cho câu hỏi Xcode sẽ không thêm “nhị phân nhúng” sau khi xóa “DerivedData”, see the original question and answer for more context and information:

  1. Hủy bỏ tất cả các dự án khuôn khổ từ workspace
  2. Thực hiện a "xây dựng sạch" và/hoặc xóa "DerivedData"
  3. Thêm dự án trở lại không gian làm việc
  4. Xây dựng dự án (có thể tùy chọn)
  5. Trong tab Chung của mục tiêu ứng dụng, hãy nhấp vào + dưới "Khung và Thư viện được Liên kết", hãy chọn khung.
  6. xây dựng và chạy trong Simulator (không nên có xây dựng các vấn đề hoặc chạy)
  7. xây dựng và chạy cho thiết bị (điều này có thể gây ra một vụ tai nạn do khuôn khổ không được liên kết một cách chính xác, bỏ qua vụ tai nạn này)
  8. Bấm + dưới "Các tệp nhị phân được nhúng", hãy chọn khung. Điều này nên thêm nó vào dự án (có thể trùng lặp trong mục "Khung Liên Kết và Libraries")
  9. Lặp lại cho tất cả các khuôn khổ cần thiết
  10. Khi xây dựng và chạy (trên thiết bị) được xác nhận, bạn có thể loại bỏ bất kỳ bản sao (và/hoặc đỏ) các khung công tác trong Điều hướng dự án hoặc nhắm mục tiêu tab Chung
+0

@drasto Nó sẽ là tốt để có được điều này được đánh dấu là câu trả lời được chấp nhận. – rjstelling

+0

rằng một trong những giải quyết rất nhiều vấn đề cho tôi! Tôi cũng mất tích và cài đặt lại Pod của tôi trong suốt khóa học và bây giờ mọi thứ hoạt động như mong đợi trên trình mô phỏng và trên thiết bị – hakkurishian

0

Tôi gặp sự cố rất giống và cố định nó chỉ tối qua. Quyết định quay lại chủ đề này và cung cấp giải pháp của tôi, vì giải pháp của rjstelling ở trên không giúp ích cho trường hợp của tôi.

Tôi có một không gian làm việc chứa hai khung công tác và một ứng dụng. Ứng dụng đã sử dụng cả hai khung công tác một cách vui vẻ trong một thời gian cho đến khi tôi bị tấn công bởi một trình biên dịch bí ẩn khi nó quyết định thêm quyền truy cập thuộc tính vào biến mẫu được gọi là "khối lập phương" của một loại lớp được tìm thấy trong một khung làm việc để "_cube" không thể (phàn nàn nó không được khai báo, trong khi nó đã thực sự làm việc trước đó trong một phương thức setter).

Tóm tắt câu chuyện dài, sau khi làm sạch, bằng cách nào đó dự án không gian làm việc/ứng dụng bị mất theo dõi khung công tác nhúng của dự án iOS 8+ của tôi. Việc loại bỏ khung công tác nhúng là rơm cuối cùng trong dòng thất bại đó, khiến cho dự án của tôi không còn cho phép chọn bất kỳ khung công tác nào để nhúng.

Hoàn nguyên dự án & không gian làm việc tới phiên bản cũ hơn đã không loại bỏ voodoo.

Tôi đã kết thúc việc thêm các dự án khung được nhúng vào trong dự án ứng dụng chính (dưới dạng tệp) và giới thiệu các phụ thuộc mục tiêu trên các khung công tác.

Sau đó tôi có thể nhúng lại các khuôn khổ và liên kết.

Đối với điều _cube, tôi phải chỉ định trình thu thập cho thuộc tính và @synthesize thuộc tính thành một tên khác. Tôi không có một lời giải thích cho điều này.

1

Làm sạch các dự án của bạn & xây dựng khung của bạn trước tiên. Sau đó bạn có thể nhúng nó.

1

Dưới đây là cách tôi giải quyết vấn đề:

  1. Xây dựng framwork.

  2. Mở thư mục xây dựng và kéo khung được xây dựng vào dự án ứng dụng (để nó sử dụng đường dẫn đến DerivedData).

  3. Thêm khung làm việc vào danh sách các khung công tác được nhúng.

  4. Trong Trình tìm kiếm, thực hiện Hiển thị nội dung trên tệp xcodeproj của ứng dụng, sau đó mở project.pbxproj trong trình chỉnh sửa văn bản yêu thích của bạn.

  5. Tìm đường có đường dẫn DerivedData dài. Thay đổi nó như vậy không có tên, con đường là tên khuôn khổ, và cây nguồn là BUILT_PRODUCTS_DIR

Xcode sẽ nhận thấy sự thay đổi và thư viện trong dự án ứng dụng sẽ có màu đen thay vì màu đỏ và bây giờ sẽ xây dựng và chạy đúng cách.

+0

'Tìm đường có đường dẫn DerivedData dài. Thay đổi nó để không có tên, đường dẫn là tên khung và cây nguồn là BUILT_PRODUCTS_DIR' đó là chìa khóa! cảm ơn! – Jan

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