1 điểm bởi GN⁺ 2025-05-19 | 1 bình luận | Chia sẻ qua WhatsApp
  • XToolcông cụ phát triển đa nền tảng có thể thay thế các chức năng của Xcode trên nhiều hệ điều hành
  • Có thể build và triển khai ứng dụng iOS trên Linux, Windows, macOS bằng SwiftPM
  • Nhà phát triển có thể tích hợp theo cách lập trình với Apple Developer Services
  • Cung cấp các subcommand dựa trên CLI như quản lý thiết bị, cài đặt, chạy ứng dụng
  • Có thể sử dụng trực tiếp các tính năng bên trong ứng dụng bằng thư viện XKit

Giới thiệu dự án XTool

  • XToolcông cụ phát triển đa nền tảng cung cấp các chức năng tương tự Xcode, hoạt động trên Linux, WSL, macOS
  • Khác với Xcode hiện có, trên Windows và Linux cũng có thể build gói SwiftPM thành ứng dụng iOSký, cài đặt lên thiết bị thật
  • Nhà phát triển có thể tích hợp theo cách lập trình với Apple Developer Services, nhờ đó có thể thiết lập môi trường phát triển iOS ngay cả khi không dùng macOS

Tính năng chính

  • Hỗ trợ build gói SwiftPM và chuyển đổi thành ứng dụng iOS
  • Có thể ký (Sign), cài đặt (Install) ứng dụng iOS
  • Tích hợp Apple Developer Services: cung cấp chức năng xác thực và sử dụng dịch vụ

Ví dụ sử dụng tiêu biểu

Giao diện dòng lệnh

  • xtool cung cấp các chức năng như phát triển, thiết bị, cấu hình... thông qua nhiều subcommand
    • setup: thiết lập môi trường phát triển iOS
    • auth: quản lý xác thực nhà phát triển Apple
    • sdk: quản lý Darwin Swift SDK
    • new: tạo dự án SwiftPM mới
    • dev: build và chạy dự án
    • ds: tương tác với Apple Developer Services
    • devices: xem danh sách thiết bị
    • install: cài file ipa lên thiết bị
    • uninstall: xóa ứng dụng
    • launch: chạy ứng dụng đã cài trên thiết bị

Sử dụng thư viện XTool (KIT)

  • Có thể đăng ký thư viện XKit làm dependency của SwiftPM để gọi trực tiếp các chức năng như Apple Developer Services, điều khiển thiết bị iOS trong ứng dụng đang phát triển
  • Nhà phát triển Swift có thể dễ dàng tích hợp vào dự án chỉ với khai báo .package().product()

Tóm tắt ưu điểm

  • Không chỉ trên macOS mà còn có thể phát triển và triển khai ứng dụng iOS trên nhiều nền tảng như Linux, Windows
  • Có thể tích hợp với nhiều công cụ phát triển như VSCode
  • Dựa trên open standard và hỗ trợ quy trình phát triển phổ quát, tự động hóa
  • Có giá trị cao như phương án thay thế khi không thể dùng Xcode

1 bình luận

 
GN⁺ 2025-05-19
Ý kiến trên Hacker News
  • Công cụ này nói là "thay thế Xcode" và "phát triển không cần Xcode", nhưng tôi nghĩ là không thể build app mà không có Xcode. Tìm hiểu thêm xem họ thay thế những thứ như thư viện hay compiler như thế nào thì hóa ra không phải vậy. Họ nói rằng "không dùng hệ thống build của Xcode, nhưng vẫn cần cài Xcode để có iOS SDK và toolchain". Tôi nghĩ họ nên truyền đạt rõ ràng hơn. Đây không phải đồ thay thế hay phương án thay thế hoàn chỉnh, mà là một lớp đặt lên trên hệ thống hiện có để mang lại trải nghiệm tốt hơn

    • Tôi nghĩ ở đây đang bị lẫn lộn giữa các khái niệm khác nhau. Đây không chỉ là một lớp chạy trên Xcode/xcodebuild, mà là vì hiện tại Apple đơn giản là phát hành mọi thứ liên quan đến iOS/Swift cùng với bản phát hành Xcode. Dù bạn không quan tâm đến IDE Xcode hay hệ thống build xcodebuild, bạn vẫn cần nó vì Xcode là cách duy nhất để tải xuống và cài đặt toolchain. Apple hoàn toàn có thể phân phối riêng các toolchain này, nhưng họ không làm vậy
  • JetBrains trước đây từng phát triển AppCode. AppCode là một IDE thông minh cho phát triển iOS/macOS, nhưng từ ngày 14 tháng 12 năm 2022 thì không còn được cung cấp như một sản phẩm thương mại nữa

    • Có vẻ giờ Fleet sẽ hỗ trợ build app Xcode, nhưng đây là bước lùi so với thời AppCode. Ở thời điểm hiện tại, Fleet không thể compile app macOS của tôi. Tôi vẫn thử lại mỗi khi có bản cập nhật, nhưng không có lựa chọn thay thế nào đáng kể
    • Nó không giúp được cho phần ObjC, nhưng phần Swift đã được tách và chuyển sang plugin của CLion. Đáng tiếc là phần liên quan đến ObjC dường như đã bị gửi vào /dev/null
  • Đây là ý kiến tham khảo từ https://forums.swift.org/t/… và bài thảo luận HN https://news.ycombinator.com/item?id=43952239

  • Về mặt lý thuyết, tôi tự hỏi liệu công cụ này có thể cho phép lập trình viên Flutter build và triển khai app iOS trên Linux hay không. Tôi thực sự hy vọng là được

    • Theo tôi biết thì về mặt kỹ thuật điều này vi phạm Apple Developer Agreement. Có vẻ như đây là chất liệu cho một vụ kiện khác
    • Dự án này có hữu ích, nhưng riêng nó thì chưa đủ. 1. Dart vẫn chưa hỗ trợ cross-compile từ Linux sang iOS. Có thể dùng Dart interpreter để thay thế, nhưng hiệu năng giảm đáng kể. 2. Dự án Flutter cho iOS dùng định dạng project của Xcode, nên cần migrate sang định dạng của xtool. 3. Hệ sinh thái plugin Flutter vẫn chưa chuyển hoàn toàn từ CocoaPods sang SwiftPM, nên những plugin chưa migrate sang SwiftPM sẽ không tương thích với xtool
    • Theo những gì tôi biết thì với darling đã làm được rồi. Trong Nixpkgs cũng có một phương án thay thế xcbuild, nhưng tôi không chắc về khả năng code signing của nó
    • Tốt hơn nên dùng các dịch vụ đã có sẵn như CodeMagic. Không cần phải chấp nhận rủi ro bị Apple khóa tài khoản
  • xcode là thứ mà cứ vài tháng lại phải tải suốt 9 tiếng, rồi đi sửa lung tung các file XML và plist. Đúng là cái Xcode đó đấy

  • Nó làm tôi nhớ đến Sweetpad. Sweetpad có quy trình cài đặt hơi rườm rà. Có vẻ XTool mang lại trải nghiệm lập trình viên (DX) tốt hơn. Hy vọng dự án này sẽ phát triển thêm

    • XTool cũng có điểm giống XcodeGen ở chỗ nó định nghĩa thông tin project bằng định dạng yaml
  • Trước đây cũng đã có bàn luận về chuyện "build app iOS trên Linux và Windows". Xem https://news.ycombinator.com/item?id=43952239

  • Tôi thấy tên tổ chức Github là "xtool-org". Tò mò không biết công ty XTool (hãng làm máy khắc laser và công nghệ thủ công) có xem đây là vấn đề hay không

  • Sẽ rất tuyệt nếu cũng có một công cụ tương tự nhưng tách khỏi XCode, đồng thời có cả tính năng preview thời gian thực cho giao diện dựa trên Swift UI

  • Trong ảnh chụp màn hình có biểu tượng vscode à?

    • Đúng vậy. Công cụ này là một ứng dụng dòng lệnh, chỉ có vai trò thay thế công cụ build. Nó không phải IDE, nên bạn viết code trong editor nào tùy thích