2015-07-17 15 views
5

lệnh của chúng tôi đã từng là như thế nàyLàm thế nào để sử dụng xcodebuild trong Xcode 7 với một phần mở rộng hồ

xcodebuild -configuration Release -target "xxx" -sdk iphoneos9.0 -scheme "xxx" archive 

Bây giờ trong Xcode 7, chúng tôi nhận được lỗi này:

Build settings from command line: 
    SDKROOT = iphoneos9.0 

=== BUILD TARGET xxx WatchKit Extension OF PROJECT Mobile WITH CONFIGURATION Release === 

Check dependencies 
target specifies product type 'com.apple.product-type.watchkit2-extension', but there's no such product type for the 'iphoneos' platform 

Làm thế nào để chúng tôi xác định để sử dụng iOS 9.0 SDK và SDK watchos 2.0?

Trả lời

20

Nếu bạn cần một mô phỏng xây dựng chạy này:

xcodebuild -workspace WorkspaceName.xcworkspace -scheme SchemeWithWatchOS2Target -destination 'name=iPhone 6' build 

Và nếu bạn cần một thiết bị xây dựng chạy này:

xcodebuild -workspace WorkspaceName.xcworkspace -scheme SchemeWithWatchOS2Target build 

Bí quyết là đối với bất kỳ xây dựng bạn cần phải loại bỏ -sdk tùy chọn . Đối với trình tạo mô phỏng, bạn cần chỉ định -destination phải là iPhone 6 hoặc iPhone 6 Plus. Và đối với các thiết bị, bạn sẽ bỏ qua -destination.

+8

Xóa đối số -sdk thực hiện thủ thuật cho tôi. Gợi ý tuyệt vời. +1 – DEAD10CC

+0

theo cách đó tôi vẫn gặp sự cố nếu tôi muốn chạy thử nghiệm, cụ thể là tôi nhận được: Đã xảy ra sự cố khi bắt đầu gói thử nghiệm: Thử nghiệm với SDK 'iphoneos' chưa được hỗ trợ. Thay vào đó, hãy thử nghiệm với SDK giả lập bằng cách đặt '-sdk iphonesimulator'. –

+0

@dev_mush, bạn cần cung cấp '-destination' để chạy thử nghiệm. – Nekto

0

Có một số lý do khiến bạn gặp phải lỗi này, nhưng nó lại rơi xuống phụ thuộc. Nếu bạn chọn một lược đồ xây dựng một mục tiêu iOS, thì bạn không gặp vấn đề gì khi sử dụng lệnh sau đây. Lưu ý rằng tôi đã sử dụng iphoneos để tự động chọn SDK mới nhất.

xcodebuild -configuration Release -target "ios" -sdk iphoneos -scheme "ios" build 

Sự cố bạn đang gặp phải được kích hoạt do phụ thuộc vào tiện ích watchOS. Tôi đã tạo một dự án mẫu và thêm một ứng dụng watchOS. Trong tab giai đoạn xây dựng, bạn thấy trong mục Phụ thuộc mà mục tiêu iOS có phụ thuộc vào mục tiêu WatchOS.

enter image description here

Đây không phải là một vấn đề nếu bạn chỉ định một destination trong xây dựng lệnh của bạn. Nhưng nó sẽ gây ra vấn đề nếu bạn yêu cầu xcodebuild xây dựng với một SDK cụ thể. Tại sao? Vì mục tiêu WatchOS không thể được xây dựng với SDK iOS. Nếu bạn chỉ định iphoneos làm SDK, bản dựng sẽ không thành công.

Chỉ định đích sẽ giải quyết vấn đề, nhưng biết rằng bạn đang sử dụng trình mô phỏng cụ thể. Nếu bạn sử dụng cùng một lệnh trên một máy khác và trình mô phỏng đó không khả dụng, thì quá trình xây dựng sẽ không thành công.

Thành thật mà nói, tôi không biết liệu có một con đường ở giữa cho phép bạn chọn SDK mới nhất và vẫn sử dụng đúng SDK cho từng mục tiêu hay không, bất kể phụ thuộc. Nếu bạn loại bỏ sự phụ thuộc của mục tiêu iOS, thì lệnh xây dựng ở trên sẽ không thành công. Bạn cũng có thể cần cập nhật lược đồ bạn đang sử dụng.

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