2013-02-26 22 views
19

sau khi đọc hướng dẫn SDK táo https://developer.apple.com/library/mac/#documentation/developertools/conceptual/cross_development/Overview/overview.htmlnhầm lẫn làm thế nào để làm cho ứng dụng OSX tương thích ngược và làm thế nào để kiểm tra chúng

Tôi vẫn còn bối rối về cách để làm cho ứng dụng mac tương thích ngược & làm thế nào để kiểm tra chúng đúng cách

Tôi có một ứng dụng, tôi chạy nó và thử nghiệm trên Mountain Lion 10.8 mà không có bất kỳ vấn đề nào, tuy nhiên tôi muốn làm cho ứng dụng này tương thích ngược để người dùng khác có thể chạy trên máy 10.6 - 10.7.

  1. Tôi có một id phát triển táo và tôi có thể tải về phiên bản cũ của 10,7 và 10,6, nhưng vấn đề là, tôi có một macbook air 2011 mà hiện đang chạy 10.8, và đó là máy táo duy nhất mà tôi có. Tôi có thể kiểm tra 10,7 và 10.6 bằng cách sử dụng vmware hoặc song song không?

  2. trong cài đặt dự án, tôi đặt triển khai đích thành 10.6 (vì tôi muốn 10.6 người dùng chạy ứng dụng của mình), nhưng tôi có nên đặt SDK thành 10.8 hoặc 10.7 không? nếu tôi đặt SDK thành 10.8 nhưng có triển khai đích được đặt thành 10.6, nếu tôi sửa tất cả các cảnh báo xcode thì nó sẽ chạy thành công trên 10.6 ??

  3. từ trình đơn thả xuống SDK, tôi chỉ có thể đặt thành 10.8 hoặc 10.7, nhưng 10.6 bị thiếu, làm cách nào để khắc phục điều đó?

cảm ơn trước

Trả lời

41

Tôi phát triển trên hộp 10,8 và hỗ trợ trở lại 10.5. Chỉ một vài tháng trước, chúng tôi đã giảm 10.4 hỗ trợ PPC và tôi vẫn đang xóa một số mã cụ thể 10.2. Điều này có thể nhận được một chút rant-y, nhưng tôi đã làm phiên bản cũ trong một thời gian dài. Tôi có một số ý kiến ​​về vấn đề này.

  • Bất kể Apple nói gì trong tài liệu của họ, nếu bạn muốn hỗ trợ 10.6, thì hãy xây dựng với SDK 10.6. Không dựa vào mục tiêu phân phối.
    • Tôi đã có cuộc thảo luận này với các kỹ sư Xcode, và trong khi họ giữ cho dòng bên của Apple mà bạn nên luôn luôn xây dựng với SDK mới nhất, họ cũng thừa nhận rằng nó thường điên rồ để làm như vậy. Nếu bạn xây dựng dựa trên SDK 10,8 và đánh dấu mục tiêu triển khai của mình ở mức 10.6, you will get no warnings for using methods that do not exist vào 10.6. Cách duy nhất bạn sẽ khám phá ra rằng bạn đã sử dụng một phương thức không tồn tại là nó có thể cung cấp cho bạn các lỗi lạ khi chạy trên 10.6. Thật điên rồ.
    • Hãy nhớ rằng OS X không gặp sự cố khi bạn gửi bộ chọn không xác định.Nó chỉ hủy bỏ runloop hiện tại. Vì vậy, các lỗi thậm chí còn khó khăn hơn để theo dõi sau đó trên iOS, ở đó ứng dụng gặp sự cố.
    • Chắc chắn, bạn có thể làm weak linking. Nói về nguy hiểm .... Có, có một vài lần điều này là hữu ích, nhưng trình biên dịch cho bạn không có cảnh báo nếu bạn không làm điều đó một cách chính xác. Nếu tôi sẽ làm liên kết yếu như thế này, tôi đi theo cách khác, liên kết với SDK cũ và sao chép nguyên mẫu của hàm mới vào thực hiện của tôi. Bằng cách đó tôi có tài liệu về mọi chức năng tôi nghĩ rằng tôi sẽ liên kết yếu.
  • Tải xuống các SDK cũ và liên kết chúng vào phân phối Xcode của bạn.
    • Bảo vệ chúng một cách ghen tuông. Apple sẽ cố gắng xóa chúng mỗi khi bạn nâng cấp Xcode. Tạo bản sao của riêng bạn và dán chúng vào/SDK hoặc một nơi khác cách xa Xcode. Tôi cung cấp một kịch bản được gọi là fix-xcode để quản lý các liên kết tượng trưng tự động. Tôi có cay đắng với Apple vì sự khăng khăng không ngừng của họ về việc xóa các SDK cũ của tôi không? Vâng là tôi.
  • Bạn có thể chạy 10.6 Máy chủ trong máy ảo một cách hợp pháp. Bạn có thể chạy 10,7+ Máy tính để bàn trong máy ảo một cách hợp pháp. Đây là những cách tốt để kiểm tra mã của bạn.
    • Hoặc bạn có thể làm những gì tôi làm và có một đống nhỏ MacBook cũ với mỗi hai hoặc ba phân vùng trên chúng mà bạn khởi động lại mọi lúc.
    • Bây giờ 10,7 đến từ App Store, it's a little harder to make VMs. Đề xuất mạnh mẽ của tôi là chụp nhanh hình ảnh của bạn ngay lập tức sau khi cài đặt và tạo một bản sao lưu dự phòng sạch sẽ. Bạn sẽ muốn có thể sao chép hình ảnh đó theo thời gian khi bạn cần quay lại máy "thô".
    • Có thói quen đuổi các SDK khi chúng xuất hiện. 10,8 sẽ cũ một ngày nào đó. Bạn cũng có thể làm một bản sao ngay bây giờ trong khi nó dễ dàng.
  • Cho dù bạn có hỗ trợ từng bản phát hành riêng lẻ hay không, có thể rất hữu ích khi giữ các gói nâng cấp cho các bản phát hành riêng lẻ. Khi bạn gặp khách hàng chạy các bản phát hành không phải hiện tại, thật tuyệt khi có thể kiểm tra xem một lỗi "không thể sản xuất" trên thực tế có dễ dàng sao chép được trên phiên bản cụ thể của chúng hay không. Cho dù điều này có đáng hay không phụ thuộc nhiều vào sản phẩm và khách hàng của bạn. Đó là một cuộc sống tiết kiệm cho tôi khi 10.4.11 thực hiện những thay đổi lớn đối với WebKit trong khi phát hành dấu chấm ...
  • Đầu tư vào một NAS nhỏ hoặc ổ USB lớn bên ngoài (mặc dù tôi đã gặp sự cố khi không sử dụng được) rộng rãi, vì vậy tôi thích RAID). Bạn sẽ cần không gian. Bạn muốn giữ nhiều máy ảo và nhiều SDK và đôi khi thậm chí là phiên bản Xcode cũ.
+0

+1 Rất sâu sắc! – trojanfoe

+1

wow, sau khi đọc tất cả các bình luận đó và đọc lại tài liệu về táo, tôi thực sự nghĩ rằng nếu tôi đặt mục tiêu triển khai thành 10.6 và đặt SDK thành phiên bản mới nhất, xcode sẽ cảnh báo tôi nếu tôi sử dụng bất kỳ phương pháp không được hỗ trợ nào. thật sự, cảm ơn bạn rất nhiều vì đã giúp bạn về điều này !! – Josh

+0

@Rob Napier Tôi gặp sự cố, tôi đã tìm thấy 10.6 SDK và tôi đã sao chép vào /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/ Tôi bắt đầu thử nghiệm SDK 10.6k bằng cách tạo dự án giả , đặt triển khai đích thành 10.6 và sdk thành 10.6 nhưng tôi gặp phải nhiều lỗi: http://i56.tinypic.com/hsu92f.png – Josh

0

Bạn cần phải làm các thiết lập này:

1.Set cơ sở SDK phiên bản hiện tại của Mac

2.Set Deployment (ví dụ 10.7.) SDK sang phiên bản cũ hơn (ví dụ: 1)

1
  1. Bạn có thể cài đặt nhiều phiên bản Mac OS trên một máy, khởi động giữa mỗi máy.
  2. SDK phải là phiên bản mới nhất (10.8).
  3. Xem 2.

Một thay thế cho 1 mà tôi đã xem xét (Tôi đang ở cùng một thuyền) là để tạo ra một Snow Leopard Hackintosh sử dụng một máy tính cũ và chỉ cần cài đặt Lion và Mountain Lion trên MBP của tôi .

+0

nhờ, không khí macbook của tôi sử dụng để chạy 10. 7 vì vậy cài đặt 10.7 trên nó sẽ không có vấn đề gì, nhưng tôi sẽ cài đặt 10.6 như thế nào? Tôi đã nói rằng phần cứng không thể mới hơn phần mềm (10.6) – Josh

+0

Có vẻ như các mô hình 2011 không thể chạy 10.6. Bạn sẽ phải thử phương pháp Hackintosh hoặc mua Mac Mini hoặc thứ gì đó. Tôi có một người bạn với Snow Leopard để trang trải cơ sở đó cho tôi ... – trojanfoe

+0

đoán tôi sẽ phải cài đặt lại 10.6 trên dell inspiron 530 của tôi, nhờ dude – Josh

2

Thêm vào Rob Napier lớn sâu answer:

Để sử dụng SDK cũ, đặt SDK (hoặc một liên kết tượng trưng) để nó ở đây:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs 

Với XCode 7.3 hoặc mới hơn , bạn cần bạn mở tập tin này và thay đổi "MinimumSDKVersion" (nếu không XCode sẽ từ chối sử dụng SDK cũ):

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist 
Các vấn đề liên quan