2011-10-13 26 views
102

Tôi vừa mới tải xuống gói Xcode 4.2 với gói iOS 5 SDK và tôi ngay lập tức nhận thấy rằng tôi không thể sử dụng iPhone 3G của mình với iOS 4.2.1 để gỡ lỗi. Tôi chỉ có thể gỡ lỗi và thử nghiệm trên iphone 4 của tôi với iOS 5 được cài đặt.Có thể nhắm mục tiêu các phiên bản iOS cũ hơn khi sử dụng Xcode 4.2 và iOS 5 SDK không?

Đối với bất kỳ thiết bị nào của tôi chạy bất kỳ iOS nhỏ hơn 5.0 Xcode, chỉ cần nói "Đã kết thúc chạy cho iPhone3GS" và không chạy. Tôi có mục tiêu triển khai được đặt là 3.0 vì tôi không sử dụng bất kỳ tính năng nào trong ứng dụng của mình ở trên 3.0 và tôi muốn có thể nhắm mục tiêu tất cả các phiên bản 3.0 trở lên. Tôi đã cài đặt và cập nhật tất cả hồ sơ dự phòng của mình.

Tôi đã thoát và khởi động lại xcode, tôi đã làm sạch bản dựng nhiều lần. Tôi đã thử thêm armv6 trong các cài đặt xây dựng kiến ​​trúc, nhưng không có gì sẽ cho phép tôi để xây dựng và chạy ứng dụng của tôi trên điện thoại cũ của tôi với ios 4.2.1.

Câu hỏi của tôi là, vẫn có thể tạo ứng dụng với SDK mới hoạt động cho các phiên bản iOS thấp hơn 5? Làm cách nào để đảm bảo rằng ứng dụng của tôi vẫn chạy trên các phiên bản iOS thấp hơn nếu tôi không thể cài đặt chúng trên điện thoại cũ của mình?

Chỉnh sửa: OK có vẻ như iOS SDK 5 đã bỏ hỗ trợ cho armv6 theo mặc định. Những gì bạn phải làm là thêm armv6 vào trường Kiến trúc trong Cài đặt Xây dựng cho cả Mục tiêu và Dự án của bạn. Sau đó, ứng dụng của bạn sẽ có thể chạy trên các thiết bị iPhone 3G. Trả lời có thể tìm thấy tại đây How to build for armv6 and armv7 architectures with iOS 5

+0

Lưu ý rằng chỉnh sửa của bạn phải liên quan đến kiến ​​trúc, đây là vấn đề riêng đối với phiên bản 'iOS'. Ngoài ra, vui lòng thêm bản chỉnh sửa làm câu trả lời để bạn có thể chấp nhận giải pháp bạn đã tìm thấy và câu hỏi này có thể được đánh dấu là đã trả lời. – darvids0n

Trả lời

152

Tôi đã gặp sự cố tương tự khi cố gắng tạo dự án Xcode 4.2 mới được tạo trên iPhone 3G 4.2.1. Đây là cách tôi có thể làm cho nó chạy.

1) Thay đổi "Thiết lập bản dựng" của mục tiêu ==> "Kiến trúc" từ "Chuẩn (armv7)" thành "khác". Thêm armv6 và armv7.

2) Thay đổi "Cài đặt xây dựng" của Target ==> "Kiến trúc hợp lệ" thành armv6 và armv7.

3) Thay đổi "Cài đặt xây dựng" của Target ==> "Mục tiêu triển khai iOS" thành iOS 4.2.

enter image description here

4) Mở dự án * -Info.plist, loại bỏ các thiết lập "khả năng thiết bị bắt buộc" (lưu ý nó đòi hỏi ARMv7) enter image description here

btw tôi figured này ra khi tôi đã cố gắng để tự thêm các ứng dụng thông qua các tổ chức và nó thông báo:

không thể cài đặt ứng dụng

các Info.plist áp dụng ở/Users/.. ./TestsDebug.ứng dụng chỉ định các yêu cầu về khả năng thiết bị, không được đáp ứng bởi Dev iPhone 3G

Tất cả sẽ hoạt động sau đó. Nói về PITA.

+0

Cảm ơn bạn rất nhiều! Tôi nợ bạn một số bia! Điều này thực sự giải quyết vấn đề của tôi, PITA thực sự: D –

+4

Cảm ơn bạn! Tôi đã đọc về các thiết lập kiến ​​trúc ở nơi khác, nhưng không ai người khác dường như cũng đề cập đến cài đặt "Khả năng thiết bị bắt buộc". – bunnyhero

+1

Siêu! Cảm ơn bạn ! –

1

Bạn cần kết nối điện thoại và sau đó chuyển đến trình tổ chức. Xcode sẽ tự động yêu cầu phiên bản cũ hơn.

Xem trang dành cho nhà phát triển để biết thêm thông tin. Nó được mô tả trong ghi chú cho phiên bản 4.2 beta

+0

Tôi đã làm điều này và nhấp vào "Sử dụng thiết bị này để phát triển" và dường như nó làm những gì nó được cho là, nhưng tôi vẫn không thể có được một ứng dụng để chạy trên thiết bị cũ của tôi từ xcode. –

12

Chuyển đến Xcode> Tùy chọn> Tải xuống và cài đặt hỗ trợ gỡ lỗi cho các phiên bản iOS cũ hơn.

+0

Tôi đã đi đến sở thích và tải xuống và cài đặt hỗ trợ gỡ lỗi cho hệ điều hành cũ, thoát xcode, mở lại xcode đã làm sạch và xây dựng, nhưng ứng dụng vẫn sẽ không cài đặt trên thiết bị cũ của tôi. Bây giờ tôi đã mất tổng số tiền, như khi tôi thấy câu trả lời của bạn, tôi nghĩ chắc chắn sẽ khắc phục được vấn đề của tôi: ( –

+1

Tôi nợ bạn bia!) Giải quyết được vấn đề này sau khi nâng cấp Xcode 4! thiết bị iOS 4.2 của tôi (iPod Touch 2nd gen)! –

3

mmorris giúp tôi giải quyết vấn đề ... Trong Info.plist, tôi phải đặt Khả năng thiết bị bắt buộc thành armv6, chứ không phải armv7 Hy vọng điều này cũng giúp người khác.

1

Tôi phát hiện ra rằng tôi đã phải thêm armv6 vào kiến ​​trúc, nhưng vẫn không hoạt động. Và bây giờ tôi đã loại bỏ armv7 khỏi các khả năng cần thiết, và đó là nó! Nó đã làm việc!

1

Tôi gặp sự cố tương tự khi cố chạy ứng dụng của mình trên iPod Touch cũ. Tôi đã nâng cấp lên Xcode 4.3.3 và ứng dụng sẽ không còn chạy trong trình sửa lỗi cho tôi trên phần cứng cũ hơn nữa.

Tôi tin rằng các nhận xét khác ở đây về "Kiến trúc" và "Khả năng thiết bị bắt buộc" là các chi tiết quan trọng để chỉ định chính xác. Thật không may, họ không đủ để sửa chữa vấn đề của tôi.

Trong trường hợp của tôi, tôi đã tìm thấy sơ đồ xây dựng là thủ phạm. Xcode 4.3.3 nhắc tôi chuyển từ trình gỡ lỗi GDB sang LLDB khi nó nâng cấp dự án của tôi. Khi tôi thay đổi hành động Run của chương trình của tôi trở lại GDB, tôi đã có thể chạy lại ứng dụng trên phần cứng cũ của tôi từ Xcode.

0

Điều này phù hợp với tôi và sẽ phù hợp với bạn nếu bạn đã có phiên bản Xcode cũ hơn trước đây. Nếu không thì bạn nên làm theo lời khuyên của những người khác để lấy SDK từ phiên bản SDK cũ hơn:

sudo cp -a /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/Applications /Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk

Lệnh này chỉ khác một chút so với lệnh được hiển thị bởi những người khác, nhưng các lệnh đó đã xóa các tệp trong Bản thân thư mục SDK cho tôi - chúng tôi muốn một thư mục con của nó được tạo với tên thích hợp.

0

Trong trường hợp của tôi có một dòng dư thừa trong khả năng thiết bị buộc enter image description here

Tôi chỉ cần loại bỏ nó ...

enter image description here

Hy vọng rằng nó sẽ giúp người khác.

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