xtool - Xcode 없이 iOS 앱을 빌드하고 배포하는 도구
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- iOS 개발자 및 DevOps 엔지니어
- Xcode 자동화/CI/CD 환경 구축 필요자
- Linux/Windows 개발 환경에서 iOS 배포를 요구하는 팀
- SwiftPM 기반 프로젝트 개발자
- 난이도: 중간 (Swift 언어 이해 및 CI/CD 기초 지식 필요)
핵심 요약
- SwiftPM 기반 프로젝트를 Linux, Windows(WSL), macOS에서 빌드 가능하며, .ipa 파일로 디바이스 배포 지원
- Apple Developer Services 연동 기능 제공 (서명/설치 자동화)
- SwiftUI 기반 Interface Builder 대체 및 SwiftData 등 Apple 독점 매크로 대응 필요
섹션별 세부 요약
1. **크로스 플랫폼 빌드 및 배포 기능**
- Xcode 기반 작업 자동화를 통해 CI/CD 환경에서 iOS 배포 가능
- SwiftPM 기반 프로젝트를 macOS 외 환경에서 빌드 지원
- Apple Developer Services 연동으로 앱 서명 및 디바이스 설치 자동화
2. **Swift 라이브러리 및 매크로 지원**
- XKit 라이브러리를 통해 Apple Developer Services 또는 iOS 디바이스와 직접 상호작용 가능
- @Observable 같은 표준 Swift 매크로는 정상 작동
- SwiftData 등 Apple 독점 매크로는 역설계 후 재구성 필요
- WebAssembly 매크로 형태로 Apple이 배포 시 모든 플랫폼에서 활용 가능
3. **현재 한계 및 향후 계획**
- Interface Builder는 SwiftUI로 대체 중 (구현 복잡)
- Asset Catalogs는 역공학 필요 (현재는 raw 이미지 파일 사용)
- App Extensions는 현재 "Application" 타입 타겟만 지원 (xtool.yml 명세 확장으로 해결 예정)
- LLDB 디버깅은 iOS 17 이후
debugserver
호출 방식 변경으로 pymobiledevice3 도구 필요
4. **App Store Connect 배포 제한**
- 자체 디바이스 실행만 지원 (App Store Connect 배포 미지원)
- iTMSTransporter 활용을 통해 ASC API 연동 인프라 구축 가능 (현재 구현 가능성 있음)
결론
- xtool은 CI/CD 환경에서 Xcode 대체로 유용하지만, App Store Connect 배포는 iTMSTransporter와 연동하여 해결해야 함
- SwiftData 등 Apple 독점 기능은 역설계 필요, WebAssembly 매크로 확장 가능성 주목
- LLDB 디버깅은 pymobiledevice3 도구를 통해 RemoteXPC 프로토콜 통합이 향후 과제로 남음