1 pontos por GN⁺ 2025-05-19 | 1 comentários | Compartilhar no WhatsApp
  • XTool é uma ferramenta de desenvolvimento multiplataforma que pode substituir os recursos do Xcode em vários sistemas operacionais
  • Usando SwiftPM, é possível compilar e distribuir apps iOS em Linux, Windows e macOS
  • Desenvolvedores podem se integrar de forma programática aos Apple Developer Services
  • Fornece subcomandos baseados em CLI para gerenciamento de dispositivos, instalação, execução de apps e mais
  • Com a biblioteca XKit, é possível usar os recursos diretamente dentro do app

Introdução ao projeto XTool

  • XTool é uma ferramenta de desenvolvimento multiplataforma com recursos semelhantes aos do Xcode, funcionando em Linux, WSL e macOS
  • Diferente do Xcode tradicional, também permite no Windows e no Linux compilar pacotes SwiftPM como apps iOS e assinar e instalar em dispositivos reais
  • Desenvolvedores podem fazer integração programática com os Apple Developer Services e montar um ambiente de desenvolvimento iOS mesmo sem macOS

Principais recursos

  • Suporte para compilar pacotes SwiftPM e convertê-los em apps iOS
  • Possibilidade de assinar (Sign) e instalar (Install) apps iOS
  • Integração com Apple Developer Services: oferece autenticação e uso dos serviços

Exemplos de uso representativos

Interface de linha de comando

  • xtool oferece recursos de desenvolvimento, dispositivos, configuração e mais por meio de vários subcomandos
    • setup: configurar o ambiente de desenvolvimento iOS
    • auth: gerenciar autenticação de desenvolvedor Apple
    • sdk: gerenciar o Darwin Swift SDK
    • new: criar um novo projeto SwiftPM
    • dev: compilar e executar o projeto
    • ds: interagir com os Apple Developer Services
    • devices: verificar a lista de dispositivos
    • install: instalar um arquivo ipa no dispositivo
    • uninstall: remover o app
    • launch: executar no dispositivo um app já instalado

Uso da biblioteca XTool (KIT)

  • Ao registrar a biblioteca XKit como dependência do SwiftPM, é possível chamar diretamente no app em desenvolvimento recursos como controle de Apple Developer Services e dispositivos iOS
  • Desenvolvedores Swift podem integrar isso facilmente ao projeto apenas com declarações .package() e .product()

Resumo das vantagens

  • Além do macOS, permite desenvolvimento e distribuição de apps iOS em várias plataformas, como Linux e Windows
  • Possibilita integração com várias ferramentas de desenvolvimento, como VSCode
  • Baseia-se em padrões abertos e oferece suporte a um fluxo de desenvolvimento genérico e automatizado
  • Tem alto valor como alternativa quando não é possível usar o Xcode

1 comentários

 
GN⁺ 2025-05-19
Comentários do Hacker News
  • Essa ferramenta fala em "substituto do Xcode" e "desenvolvimento sem Xcode", mas eu acho impossível compilar um app sem Xcode. Fui pesquisar melhor como eles substituem coisas como bibliotecas e compiladores, e na prática não é bem assim. Eles dizem: "não usa o sistema de build do Xcode, mas a instalação do Xcode ainda é necessária por causa do SDK do iOS e do toolchain". Acho que a mensagem deles deveria ser mais clara. Isto não é um substituto nem uma alternativa completa, e sim uma camada sobre o sistema existente, buscando uma experiência melhor

    • Acho que há uma confusão entre conceitos diferentes aqui. Não é apenas uma camada sobre Xcode/xcodebuild; é só que a Apple atualmente entrega todo o conteúdo relacionado a iOS/Swift junto com as releases do Xcode. Mesmo que você não se importe com a IDE do Xcode nem com o sistema de build do xcodebuild, ele continua sendo necessário porque é a única forma de baixar e instalar o toolchain. A Apple poderia fornecer esse toolchain separadamente, mas não faz isso
  • A JetBrains já desenvolveu o AppCode no passado. O AppCode era uma IDE inteligente para desenvolvimento iOS/macOS, mas desde 14 de dezembro de 2022 ele não é mais oferecido como produto comercial

    • Agora parece que o Fleet vai dar suporte a builds de apps Xcode, mas é um retrocesso em relação ao AppCode. No momento, o Fleet não consegue compilar meu app macOS. Eu testo a cada atualização, mas não há grande alternativa
    • Não ajuda na parte de ObjC, mas a parte de Swift foi separada e movida para um plugin do CLion. Infelizmente, parece que todo o conteúdo relacionado a ObjC foi enviado para /dev/null
  • Comentário com referência a https://forums.swift.org/t/… e ao tópico no HN https://news.ycombinator.com/item?id=43952239

  • Em teoria, fico me perguntando se essa ferramenta permitiria a um desenvolvedor Flutter compilar e publicar apps iOS a partir do Linux. Seria realmente ótimo se fosse o caso

    • Pelo que sei, isso tecnicamente viola o Apple Developer Agreement. Parece material para mais um processo
    • Esse projeto ajuda, mas por si só não basta. 1. O Dart ainda não faz cross-compilation de Linux para iOS. Como alternativa, dá para usar o interpretador Dart, mas com grande perda de desempenho. 2. Projetos Flutter para iOS usam o formato de projeto do Xcode, então seria preciso migrar para o formato do xtool. 3. O ecossistema de plugins Flutter ainda não migrou totalmente de CocoaPods para SwiftPM, então plugins que ainda não foram migrados para SwiftPM não são compatíveis com o xtool
    • Até onde eu sei, isso já é possível com darling. O Nixpkgs também tem uma alternativa ao xcbuild, mas não tenho certeza sobre a funcionalidade de code signing
    • O ideal é usar serviços já existentes, como o CodeMagic. Não vale a pena correr o risco de ter a conta Apple suspensa
  • xcode é aquela ferramenta que precisa baixar por 9 horas a cada poucos meses e sai alterando arquivos XML e plist sem parar. Aquele xcode mesmo

  • Lembra o Sweetpad. A instalação do Sweetpad é meio trabalhosa. O XTool parece oferecer uma experiência de desenvolvimento (DX) melhor. Espero que esse projeto continue evoluindo

    • O XTool também se parece com o XcodeGen no sentido de definir as informações do projeto em formato yaml
  • Já houve discussão antes sobre "compilar apps iOS no Linux e no Windows". Ver https://news.ycombinator.com/item?id=43952239

  • Vi que o nome da organização no Github é "xtool-org". Fico curioso se a empresa XTool (que fabrica gravadores a laser e tecnologia para artesanato) não vai implicar com isso

  • Seria legal se existisse também uma ferramenta parecida, separada do XCode, com preview em tempo real de interfaces baseadas em Swift UI

  • Tem um ícone do vscode na captura de tela?

    • Tem sim. Essa ferramenta é um app de linha de comando que só troca a ferramenta de build. Não é uma IDE, então o código é trabalhado no editor que você quiser