1P by GN⁺ 1일전 | ★ favorite | 댓글 1개
  • XTool은 Xcode 기능을 여러 운영체제에서 대체할 수 있는 크로스플랫폼 개발 도구
  • SwiftPM을 활용해 Linux, Windows, macOS에서 iOS 앱 빌드 및 배포가 가능함
  • 개발자는 Apple Developer Services와 프로그램적으로 연동할 수 있음
  • 장치 관리·설치·앱 실행 등의 CLI 기반 서브커맨드를 제공함
  • XKit 라이브러리로 앱 내부에서 직접 기능을 활용할 수 있음

XTool 프로젝트 소개

  • XTool은 Xcode와 유사한 기능을 제공하는 크로스플랫폼 개발 툴로, Linux, WSL, macOS에서 동작함
  • 기존 Xcode와 달리 Windows, Linux에서도 SwiftPM 패키지를 iOS 앱으로 빌드하고 실제 장치에 서명·설치할 수 있음
  • 개발자는 Apple Developer Services와의 프로그램적 연동이 가능하며, macOS가 아니더라도 iOS 개발 환경을 구축할 수 있음

주요 기능

  • SwiftPM 패키지 빌드 및 iOS 앱 변환 지원
  • iOS 앱의 서명(Sign), 설치(Install) 가능
  • Apple Developer Services 연동: 인증 및 서비스 활용 기능 제공

대표적 사용 예시

명령줄 인터페이스

  • xtool은 다양한 서브커맨드를 통해 개발, 장치, 설정 등 기능을 제공함
    • setup: iOS 개발 환경 셋업
    • auth: Apple 개발자 인증 관리
    • sdk: Darwin Swift SDK 관리
    • new: 새 SwiftPM 프로젝트 생성
    • dev: 프로젝트 빌드 및 실행
    • ds: Apple Developer Services와 상호작용
    • devices: 장치 목록 확인
    • install: ipa 파일을 디바이스에 설치
    • uninstall: 앱 삭제
    • launch: 디바이스에서 설치된 앱 실행

XTool 라이브러리(KIT) 활용

  • XKit 라이브러리를 SwiftPM 의존성으로 등록하여, 개발 중인 앱에서 Apple Developer Services, iOS 디바이스 제어 등 기능 직접 호출 가능
  • Swift 개발자는 .package().product() 선언만으로 프로젝트에 손쉽게 통합할 수 있음

장점 요약

  • macOS뿐만 아니라 Linux, Windows 등 다양한 플랫폼에서 iOS 앱 개발·배포가 가능함
  • VSCode 등 다양한 개발 툴 연동 가능
  • 오픈 스탠더드 기반이며, 범용적이고 자동화된 개발 흐름을 지원함
  • Xcode 사용이 불가능할 때 대체제로 활용 가치가 높음
Hacker News 의견
  • 이 도구에서 "Xcode 대체"와 "Xcode 없이 개발"이라고 말하지만, 나는 Xcode 없이 앱을 빌드하는 것이 불가능하다고 생각함. 라이브러리나 컴파일러 같은 것들을 어떻게 대체하는지 더 찾아보니, 실제로는 그렇지 않음. "Xcode 빌드 시스템은 사용하지 않지만, iOS SDK와 툴체인을 위해 Xcode 설치는 여전히 필요함"이라고 함. 나는 이들의 메시지를 더 명확히 해야 한다고 생각함. 이것은 대체품이나 완전한 대안이 아니라, 기존 시스템 위에 얹혀진, 더 나은 경험을 추구하는 레이어임

    • 나는 여기에서 다른 개념들이 혼동되고 있다고 생각함. 그냥 Xcode/xcodebuild 위에 올라가는 계층이 아니라, Apple이 현재 모든 iOS/Swift 관련 내용을 Xcode 릴리즈와 함께 제공하는 것일 뿐임. Xcode IDE나 xcodebuild 빌드 시스템에 관심이 없어도, 툴체인을 다운로드·설치할 유일한 방법이 Xcode이기 때문에 필요함. 애플이 이런 툴체인을 따로 제공할 수 있지만, 그렇게 안 하고 있음
  • JetBrains가 과거에 AppCode를 개발했었음. AppCode는 iOS/macOS 개발을 위한 스마트 IDE였지만 2022년 12월 14일부터 더 이상 상업 제품으로 제공되지 않음

    • 이제는 Fleet이 Xcode 앱 빌드를 지원할 듯 보이지만, AppCode 때보다 후퇴임. 현재로서 Fleet은 내 macOS 앱을 컴파일하지 못함. 업데이트가 나올 때마다 시도하는데, 별다른 대안이 없음
    • ObjC 부분에는 도움이 안 되지만, Swift 부분은 CLion 플러그인으로 분리 이동함. 안타깝게 ObjC 관련 내용은 /dev/null로 보낸 듯함
  • https://forums.swift.org/t/… 및 HN 토론글 https://news.ycombinator.com/item?id=43952239 참고 의견임

  • 이론적으로 이 도구로 인해 Flutter 앱 개발자가 Linux에서 iOS 앱을 빌드하고 배포할 수 있는지 궁금함. 정말 그랬으면 하는 바람임

    • 기술적으로는 Apple Developer Agreement 위반이라고 알고 있음. 또 다른 소송이 벌어질 소재로 보임
    • 이 프로젝트가 도움이 되긴 하지만 이것만으로 충분하지 않음. 1. Dart가 Linux에서 iOS로의 크로스 컴파일이 아직 안 됨. 대안으로 Dart 인터프리터를 쓸 수 있지만 성능 저하가 큼. 2. Flutter iOS 프로젝트는 Xcode 프로젝트 포맷을 쓰므로, xtool 포맷으로 마이그레이션 필요함. 3. Flutter 플러그인 생태계가 CocoaPods에서 SwiftPM으로 아직 완전히 옮겨지지 않아서, SwiftPM으로 마이그레이션되지 않은 플러그인은 xtool과 호환이 안 됨
    • 내가 아는 한 darling으로 이미 가능함. Nixpkgs에도 xcbuild 대안이 있지만 코드사인 기능은 확실하지 않음
    • CodeMagic 같이 이미 나와 있는 서비스를 쓰는 것이 바람직함. 애플 계정 정지 위험을 감수할 필요 없음
  • xcode는 몇 달마다 9시간씩 다운로드해야 하고, XML·plist 파일을 마구 수정하는 도구임. 그 xcode임

  • Sweetpad를 떠올리게 함. Sweetpad는 설치 과정이 다소 번거로움. XTool이 더 나은 개발 경험(DX)을 제공하는 듯함. 이 프로젝트가 더 성장하길 바람

    • XTool은 프로젝트 정보를 yaml 포맷으로 정의한다는 점에서 XcodeGen과도 비슷한 점이 있음
  • 이전에도 "리눅스와 윈도우에서 iOS 앱 빌드" 관련 이야기가 있었음. https://news.ycombinator.com/item?id=43952239 참고

  • Github 조직명이 "xtool-org"임을 봄. XTool이라는 회사(레이저 조각기 및 크래프팅 기술 제작)가 이 문제를 삼지 않을지 궁금함

  • XCode와 분리된 유사 도구로 Swift UI 기반 인터페이스를 실시간 미리보기 기능 또한 있으면 멋질 것임

  • 스크린샷에 vscode 아이콘이 있음?

    • 맞음. 이 도구는 커맨드라인 앱으로 빌드 도구만 바꾸는 역할임. IDE는 아니므로, 코드는 원하는 편집기에서 작업함