2017-07-09 24 views
7

Tôi muốn chia codebase thành thư viện mà tôi muốn tải lên github và một ứng dụng GUI. Tôi hy vọng rằng việc sử dụng SwiftPM được giới thiệu gần đây là một ý tưởng hay.Cách tạo ứng dụng GUI Cocoa với SwiftPM

Nhưng tất cả các ví dụ tôi có thể tìm thấy chương trình tạo ứng dụng bảng điều khiển với swift package init --type executable.

Tôi muốn biết cách tạo bộ xương cho ứng dụng MacOS Cocoa với tất cả các nội dung được tạo trước như nội dung, bảng phân cảnh và vân vân?

Nó sẽ là tuyệt vời để có quyền truy cập vào điều hữu ích như:

swift package build 
swift package test 
swift package update 
... 

Bất kỳ ý tưởng?

Cảm ơn bạn!

Trả lời

7

Đây là giải pháp làm việc của tôi để tạo ứng dụng ca cao với SPM.

  1. Tạo phiên bản thực thi của bạn áp dụng: swift package init --type executable
  2. Bao gồm các gói của bạn trong Package.swift
  3. Cập nhật/lấy họ: swift package update hoặc swift package fetch
  4. Tạo .xcodeproj của bạn: swift package generate-xcodeproj
  5. Mở .xcodeproj của bạn với Xcode; bạn sẽ thấy nó dưới dạng ứng dụng giao diện điều khiển.
  6. Xây dựng giải pháp của bạn (build này sẽ tạo ra phụ thuộc: .frameworks, dưới 'Sản phẩm')
  7. Nhấp vào tên dự án để thấy mục tiêu
  8. Thêm một mục tiêu mới bằng cách nhấn + nút bên dưới danh sách, và tạo ra của bạn ứng dụng ca cao/gui
  9. Sau khi thêm ứng dụng, hãy nhấp vào tên ứng dụng trên danh sách mục tiêu
  10. Dưới mục General tab định vị mục Embedded Binaries.
  11. Nhấn + để thêm các tệp nhị phân và chọn thư viện được tham chiếu của bạn.
  12. Làm việc trên ứng dụng ca cao của bạn.
  13. Khi bạn xây dựng, .frameworks sẽ được nhúng vào .app

Nếu bạn cập nhật packages.swift của bạn, bạn nên lặp lại ở trên, ngoại trừ việc tạo ra các mục tiêu mới; bạn chỉ cần thêm nó vào dự án.

+0

Cảm ơn bạn đã trả lời! Một sửa chữa: "nhanh chóng init - loại thực thi" -> "gói nhanh chóng init - loại thực thi". Và một câu hỏi: nếu bạn thêm gói vào 'Package.swift' và thực thi "gói swift generate-xcodeproj", toàn bộ dự án sẽ được tạo lại và ứng dụng ca cao/gui sẽ biến mất khỏi danh sách đích. Làm thế nào để thêm gói mới vào 'Package.swift' mà không xóa ứng dụng gui khỏi mục tiêu? – Andrew

+0

Xin chào. Không có cách nào dễ dàng cho việc này. Sao lưu ứng dụng của bạn; tạo xcodeproj; thêm lại mục tiêu; thay thế mã. Unfortunatelly, SPM + Xcode sử dụng bị hạn chế. SPM thực thi + Giải pháp Xcode là giải pháp thay thế. SPM + Xcode Cocoa ứng dụng là giải pháp cho một workaround. – ANS

+0

@Andrew tạo một dự án riêng (OSX hoặc iOS) và tham khảo dự án do SPM tạo ra dưới dạng tiểu dự án. Các mục tiêu khung dự án do SPM tạo ra phải được sửa đổi một chút theo cách thủ công (đường dẫn tìm kiếm ... vv). Bằng cách này tôi đang xây dựng CLI của tôi với SPM và OSX và ứng dụng iOS với Xcode. Cập nhật các gói của tôi tiếp theo có nghĩa là chỉ sửa đổi nhỏ về dự án do SPM tạo ra. Nó không phải là lý tưởng, nhưng nó làm việc cho tôi. Đối với ứng dụng iOS, bạn cần phải thay đổi khung SDK SDK iOS, nếu không, bạn sẽ gặp sự cố khi lưu trữ ứng dụng của mình (không có hỗ trợ bitcode cho OSX SDK) – user3441734

0

SPM không thay thế Xcode và không quản lý các phụ thuộc không nhanh chóng của bạn.

thiết lập Xcode + SPM chưa được hỗ trợ. có các bài viết (trên google và tại đây) về việc kết hợp hai số

ví dụ: Adding Swift 3 packages to Xcode 8 using the Swift package manager

+0

Giải pháp hầu như đã hiệu quả. Nhưng XCode từ chối chạy ứng dụng sau khi chuyển đổi dự án. Tôi đã đặt mã nguồn ở đây: https://github.com/fantamp/fast-image-picker – Andrew

+1

Tôi đã tải lên hai phiên bản của dự án: 1) trước khi chuyển đổi và 2) sau khi chuyển đổi: https: // github.com/fantamp/learning-spm/release; Thứ hai từ chối chạy từ XCode với thông báo "không thể khởi động hoặc gỡ lỗi quá trình" – Andrew

+0

Cảm ơn tôi sẽ cố gắng vào ngày mai –

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