2009-06-19 27 views
6

Tôi có một dự án hiện có mà tôi đang làm việc và gần đây tôi đã quyết định cập nhật SDK iPhone của mình và cập nhật lên SDK 3.0 mới nhất.Nâng cấp lên iPhone SDK 3.0 Gây ra sự cố UIKit

Tôi cập nhật SDK của mình và đi để mở dự án hiện có của mình. Chắc chắn, có một số vấn đề bao gồm một số vấn đề về chứng chỉ và vân vân. Dù sao, google và tôi đã có thể giải quyết hầu hết trong số họ, nhưng tôi đã không có bất kỳ may mắn về những gì tôi hy vọng sẽ là vấn đề cuối cùng của tôi.

Khi chạy chương trình của tôi trong mô phỏng, tôi bây giờ có được

dyld: Thư viện không nạp: /System/Library/Frameworks/UIKit.framework/UIKit tham chiếu từ: /Developer/iGameLib/iGameLib/build/Debug-iphonesimulator/iGameLib.app/iGameLib Lý do: hình ảnh không tìm thấy

Bây giờ, tôi đã khám phá ra UIKit đã chuyển sang

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0sdk/ System/Library/Frameworks/UIKit

và tôi đã cập nhật các thiết lập mục tiêu và dự án của tôi để trỏ đến vị trí đó khuôn khổ mới, nhưng vẫn còn khi tôi xây dựng nó, không may mắn.

Tôi cũng đã thử xóa các ứng dụng và cài đặt của trình mô phỏng, vẫn không có may mắn.

Tham chiếu .app bị xóa khi tôi chạy menuitem "sạch", tôi đã xác nhận điều này, vì vậy rõ ràng điều gì đó trong cài đặt dự án của tôi vẫn trỏ đến sử dụng vị trí UIKit cũ.

Tôi nên tìm ở đâu?

Tôi đã đi xa hết mức có thể để giúp bản thân nhưng tôi sợ rằng tôi đang thua lỗ ở đây. Tôi không nhìn thấy nó dưới các thiết lập mục tiêu, hoặc các thiết lập dự án, hoặc plist, hoặc bất kỳ các tập tin khác trong dự án của tôi.

Trả lời

1

Tôi đã có một số vấn đề tương tự với Xcode dường như không có nguyên nhân rõ ràng. Thực tế của vấn đề là Xcode vẫn còn có lỗi ở đây và ở đó và đôi khi bạn S run chạy vào một bức tường.

Kinh nghiệm của tôi: Tương tự như tình huống của bạn, trong một dịp cụ thể, một dự án Xcode tôi đang làm việc chỉ dừng xây dựng vì bất kỳ lý do bí ẩn nào và không làm sạch, googling hoặc SO-ing. Vì vậy, tôi chỉ đơn giản là tạo ra một dự án MỚI, MỚI và điền mã nguồn từ dự án tham nhũng của tôi vào dự án mới. Dự án mới sử dụng nguồn CÙNG, thư viện, tài nguyên, cài đặt, ghi nhớ bạn - và nó được xây dựng mà không có vấn đề gì. Phải mất khoảng 20-25 phút để thực hiện chuyển giao nhưng xem xét rằng tôi đã dành vài GIỜ cố gắng để giải quyết một lỗi mà sẽ không tiết lộ chính nó trong dự án tham nhũng, thời gian cũng có giá trị nó.

Vì vậy, tôi khuyên bạn nên làm những gì tôi đã làm: Có thể thử tạo một dự án mới và chuyển nguồn và tài nguyên cũ của bạn qua.

Good Luck

+1

Sử dụng hệ thống SCM hoặc Snapshot tích hợp của Xcode, nếu bạn gặp trường hợp như vậy, bạn có thể quay lại phiên bản trước của tệp dự án hoặc thậm chí là phân biệt dự án bị hỏng với phiên bản đang hoạt động. Có rất nhiều công cụ để thử trước khi tạo lại dự án của bạn như một phương sách cuối cùng. – cdespinosa

2
  1. Kiểm tra cài đặt mục tiêu của bạn
    Hãy chắc chắn rằng bạn đang thực sự liên kết với tất cả những khuôn khổ trong Target (kiểm tra trong phần "liên kết nhị phân với các thư viện")

  2. Make chắc chắn bạn đã chọn sdk 3.0 làm SDK cơ sở

  3. Tạo dự án trống và thêm khung của bạn như trước; nếu bạn vẫn còn có vấn đề, có thể là một SDK borked cài đặt

BTW, bạn không cần phải thêm lại khung sdk, như các đường dẫn có liên quan đến SDK hiện

Chỉ cần cố gắng để thể hữu ích ... không chắc chắn tôi có thể gỡ lỗi từ đây :)

+0

Vì vậy, nơi nào bạn đi để thay đổi sdk 3.0 như sdk cơ sở của bạn? Tôi nghĩ rằng có thể là vấn đề bằng cách nào đó. Nếu nó đơn giản như việc thay đổi mục tiêu xây dựng thành "Simulator - 3.0 | Debug" thì tôi đã thực hiện nó. Có một cài đặt nào khác tôi bị thiếu cho vị trí SDK cơ sở iPhone không? –

+1

Dự án> Chỉnh sửa Cài đặt dự án> Chung> SDK cơ sở. Đảm bảo rằng mục tiêu cụ thể của bạn (Project> Edit Target Settings> Build> Base SDK) không ghi đè cài đặt Project được chia sẻ bởi tất cả các mục tiêu khác. – cdespinosa

4

OK, TÔI CÓ TRẢ LỜI!

Rất đơn giản, Xcode không thay đổi tất cả các biến một cách chính xác trong tệp .xcodeproj thực tế. Vì vậy, đây là các bước tôi đã thực hiện.

Thoát khỏi Xcode, bạn phải thực hiện công việc này tại nhà ga. Mang đến một thiết bị đầu cuối và đi đến dự án của bạn. Tìm .xcodeproj của bạn và đi vào nó như thể nó là một thư mục. Nó trông giống như một tập tin thực tế trong công cụ tìm, nhưng nó là một trong những thư mục gói đó.

Bây giờ, tôi không thể có được TextEdit cho phép tôi để chỉnh sửa nó, nhưng bạn có thể đi vào nano, do đó, như tôi đã làm

sudo nano project.pbxproj mà đang được tập tin .xcodeproj tôi/thư mục/gói /bất cứ điều gì.

Trong tệp này, bạn cần tìm vị trí đặt SDKROOT. Rất có thể là một vài nơi nó được tham chiếu, nhưng bạn đang tìm kiếm SDKROOT = iphoneos2.2.1 hoặc một cái gì đó tương tự. Thay đổi TẤT CẢ NÀY (có một vài) thành SDKROOT = iphoneos3.0

Bây giờ, bạn đang ở một nửa ở đó. làm ctrl x và lưu tệp. Tiếp theo bạn sẽ làm ls và tìm ra tệp .pbxuser là gì. Mine là myname.pbxuser. chạy lệnh cùng một

sudo nano myname.pbxuser

Trong tập tin này, có một số lượng lớn các tài liệu tham khảo cho thư mục sdk 2.1 iphone. Thực hiện tìm kiếm/thay thế iPhoneSimulatorOLDVERSION.sdk, trong trường hợp của tôi là iPhoneSimulator2.1.sdk và thay đổi 2.1 thành 3.0. Hãy rất cẩn thận với điều này mặc dù, tôi sẽ không muốn biết những gì sẽ xảy ra khi bạn mess tập tin này lên.

Lưu và mở xcode. Làm sạch dự án và xây dựng và chạy. Mau!

+0

Giải pháp của Zach là câu trả lời đúng. Tôi phải nói, tôi ngạc nhiên rằng những câu trả lời mới hơn chỉ đơn giản là nói tạo một dự án mới có nhiều phiếu bầu hơn. – pr1001

+1

Bạn không cần phải làm điều này (trên thực tế, không nên có "số lượng lớn" đường dẫn SDK cụ thể trong dự án của bạn). Điều duy nhất bạn cần làm là Project> Edit Project Settings> General và chọn SDK mới từ đó. Nếu có các đường dẫn SDK cụ thể khác trong dự án của bạn, bạn có kéo các khung công tác vào dự án của mình trực tiếp từ Trình tìm kiếm thay vì chọn chúng bằng bảng Thêm khung hiện có không? Nếu có, hãy kiểm tra "Đường dẫn tìm kiếm khung" trong mục tiêu của bạn và xóa đường dẫn cụ thể cho SDK có thể có ở đó. – cdespinosa

0

Tôi đã gặp vấn đề tương tự khi sử dụng Xcode 3.2.1 nhưng nó đã được giải quyết một cách dễ dàng hơn. Tôi nhận ra rằng gần đây tôi đã vô hiệu hóa các biến môi trường của mục tiêu của tôi, cụ thể là những việc cần làm với gỡ lỗi bộ nhớ (NSDebugEnabled, NSZombieEnabled, NSAutoreleaseFreedObjectCheckEnabled, MallocStackLogging, MallocStackLoggingNoCompact). Ứng dụng chạy một lần trong trình mô phỏng sau khi xóa các biến môi trường nhưng không bao giờ trở lại sau đó.

Thoát Xcode, Trình mô phỏng, khởi động lại Xcode và làm sạch hoàn toàn mục tiêu (bao gồm cả các phụ thuộc của khóa học) đã đưa tôi trở lại trạng thái tốt.

1

Tôi vừa xóa UIKit.framework từ thư mục 'Khung', nhấp chuột phải và thêm lại. Xây dựng sạch sẽ, và không có vấn đề ..

+0

Tôi đã gặp phải vấn đề tương tự và đây cũng là cách tôi đã khắc phục sự cố đó. xcode đã cố gắng tìm Khung trong thư mục sai, vì vậy việc thêm lại nó đã cho xcode đường dẫn thích hợp. –

0

Cùng một vấn đề khi khởi chạy ứng dụng của tôi mà không cần gỡ lỗi. Theo kinh nghiệm của tôi, nhị phân được tạo ra dường như không phải là thủ phạm.

Tôi đã tạo ứng dụng từ trình hướng dẫn xcode khởi chạy OK trong trình mô phỏng (hãy gọi nó là testApp, ứng dụng của tôi được gọi là myApp), tôi đã cố gắng tìm ra sự khác biệt với ứng dụng của mình ở đâu.

otool -L myApp cho đúng (đường dẫn tương đối) để các khuôn khổ, giống như testApp

ps -E DYLD_ROOT_PATH, DYLD_FALLBACK_FRAMEWORK_PATH, DYLD_FRAMEWORK_PATH, biến môi trường DYLD_LIBRARY_PATH cần thiết bởi ld để xác định vị trí khuôn khổ là OK cho MyApp so với các giá trị của các biến này khi testApp được khởi chạy

Tôi nghi ngờ rằng sự cố nằm ở đâu đó trong giao tiếp giữa XCode và trình mô phỏng khi ứng dụng được khởi chạy ... tôi không thể tìm thấy điều gì sai ...

Các giải pháp mà làm việc (ít nhất là đối với tôi) có chắc chắn một số tác dụng phụ lớn nhưng ở đây nó là: bỏ xcode duyệt nội dung của gói myApp.xcodeproj unlock .model1v3 và .pbxuser cho sửa đổi (khóa trong bảng thông tin (cmd-I vào file)) xóa hai tập tin bắt đầu xcode và thử lại để khởi động ứng dụng của bạn từ đó

10

tôi đã nhận được báo lỗi tương tự

dyld: Thư viện không nạp:/Hệ thống/Thư viện/Khung/UIKit.framework/UIKit

Giải pháp trong trường hợp của tôi đơn giản là bỏ Xcode và thử lại.

+0

Điều này cũng phù hợp với tôi. –

+0

Tuyệt vời, thậm chí không bao giờ nghĩ về điều đó. Nhưng nó đã hoạt động! –

+3

Đã hoạt động! Tại sao Apple thuê Microsoft để tạo phiên bản mới của xCode? – ma11hew28

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