Amper é uma ferramenta de configuração e construção de projetos. Seu objetivo é fornecer uma experiência de usuário excelente e tranquila e suporte IDE. Acreditamos que isso pode ser alcançado por:
fornecer uma DSL de configuração declarativa amigável ao desenvolvedor e ao IDE - para simplificar não apenas a configuração inicial, mas também melhorar a capacidade de manutenção e permitir que um IDE ajude na configuração automática de maneira confiável;
agrupar um conjunto selecionado de conjuntos de ferramentas e extensões compatíveis - para oferecer suporte à maioria dos cenários sem a necessidade de encontrar plug-ins compatíveis;
escolhendo cuidadosamente os pontos de extensibilidade - para manter o modelo mental geral e a UX da configuração consistentes e para evitar a execução inesperada de código de terceiros.
Em essência, nosso objetivo é alcançar uma experiência bem pensada e testada semelhante à dos IDEs da JetBrains.
Atualmente estamos analisando vários aspectos, incluindo a configuração de projetos de construção, embalagem, publicação e muito mais. No estágio atual, porém, o foco está principalmente na configuração de projetos para construção. Embora o caso de uso atual seja Kotlin e Kotlin Multiplataforma, Amper também oferece suporte a Java e Swift (como um requisito para multiplataforma). No entanto, a mesma abordagem de configuração poderá funcionar para outras linguagens e pilhas de tecnologia no futuro.
Amper existe como uma ferramenta de construção independente, bem como um plugin Gradle para projetos existentes baseados em Gradle. Ambas as versões oferecem um formato de configuração declarativo unificado e fácil de usar.
Recursos suportados:
Criação e execução de aplicativos JVM, Android, iOS, Linux e macOS.
Criação de bibliotecas multiplataforma Kotlin.
Executando testes.
Misturando código Kotlin, Java e Swift.
Assistência de código para arquivos de módulo no IntelliJ IDEA e Fleet.
Projetos multimódulos.
Usando o Compose Multiplataforma.
Usando recursos multiplataforma do Compose*.
Interoperabilidade Gradle, incluindo a combinação dos módulos Amper e Gradle em um projeto*.
Integração com catálogos de versões Gradle*.
Layout de projeto compatível com Gradle para uma migração tranquila de projetos Gradle existentes*.
*somente em projetos baseados em Gradle
Direções futuras:
Suporte para mais cenários e configurações Kotlin e Kotlin Multiplataforma.
Mais tipos de produtos e plataformas, como watchOS, Windows, etc.
Tipos de testes específicos da plataforma, incluindo testes instrumentados para Android.
Suporte a dependências nativas, como CocoaPods, Swift Package Manager.
Embalagem e publicação.
Suporte a variantes de construção.
Extensibilidade.
Para um início rápido:
Instruções de configuração e uso
Tutorial
Documentação
Projetos de exemplo
Guia de migração Gradle
Amper usa o YouTrack para rastreamento de problemas, crie um novo problema para relatar problemas ou enviar ideias.
Antes de relatar um problema, verifique as Perguntas frequentes.
Você também pode ingressar no canal do Slack para discussões ou compartilhar seus comentários usando o formulário de feedback.
Existem várias maneiras de experimentar o Amper:
No último IntelliJ IDEA EAP, para projetos JVM e Android (instruções).
Na última frota JetBrains, para projetos JVM, Android e Multiplataforma (instruções).
Usando Amper autônomo na linha de comando.
Usando Amper baseado em Gradle na linha de comando para construir projetos Amper baseados em Gradle.
Aqui está uma JVM muito básica "Hello, World!" projeto:
Os arquivos main.kt
e MyTest.kt
são apenas arquivos Kotlin normais, sem nada de especial. A parte interessante é module.yaml
, que é o arquivo de configuração do módulo Amper. Para a estrutura do projeto acima, seria simplesmente:
# Produza um produto de aplicativo JVM: jvm/app
É isso. As cadeias de ferramentas Kotlin e Java, a estrutura de teste e outras funcionalidades necessárias são configuradas e disponibilizadas imediatamente. Você pode construí-lo, executá-lo, escrever e executar testes e muito mais. Para informações mais detalhadas, confira o exemplo completo.
Agora, vamos dar uma olhada em um projeto do Compose Multiplatform com aplicativos JVM para Android, iOS e desktop, com a seguinte estrutura de projeto no Fleet:
Observe como a pasta src/
contém código Kotlin e Swift juntos. É claro que também poderia ser Kotlin e Java. Outro aspecto a destacar é o módulo compartilhado com o código comum na pasta src
e nas pastas de código específicas da plataforma src@ios
e src@android
(saiba mais sobre layout do projeto).
Esta é a aparência do arquivo ios-app/module.yaml
:
# Produza um produto de aplicativo iOS: ios/app# Depende do módulo de biblioteca compartilhada: dependências: - ../sharedsettings: # Habilite o framework Compose Multiplatform compose: enabled
Isso é bastante simples: ele define um aplicativo iOS com dependência de um módulo compartilhado e ativa a estrutura Compose Multiplatform. Um exemplo mais interessante seria shared/module.yaml
:
# Produza uma biblioteca compartilhada para as plataformas JVM, Android e iOS:produto: tipo: lib plataformas: [jvm, android, iosArm64, iosSimulatorArm64, iosX64]# Dependências compartilhadas do Compose:dependências: - $compose.foundation: exportado - $compose.material3: exportado# Dependências somente para Android dependencies@android: # Integração específica do Android com o Compose - androidx.activity:activity-compose:1.7.2: exportado - androidx.appcompat:appcompat:1.6.1: exportou# dependências somente iOS com uma dependência em um CocoaPod (ainda não implementado)dependencies@ios: - pod: 'Alamofire' versão: '~> 2.0.1'settings: # Habilitar serialização Kotlin kotlin: serialização: json # Habilite o framework Compose Multiplatform compose: enabled
Vale a pena mencionar algumas coisas. Primeiro, observe as dependências específicas da plataforma: seções com o qualificador @<platform>
. O qualificador de plataforma pode ser usado tanto no manifesto quanto no layout do arquivo. O qualificador organiza o código, as dependências e as configurações de uma determinada plataforma. Em segundo lugar, a seção dependencies: permite não apenas dependências Kotlin e Maven, mas também gerenciadores de pacotes específicos de plataforma, como CocoaPods, Swift Package Manager e outros.
Naturalmente, esses exemplos mostram apenas um conjunto limitado de recursos do Amper. Para obter mais informações sobre design e funcionalidade, consulte a documentação, o tutorial e exemplos de projetos.
Confira nossos projetos de exemplo:
JVM "Olá, mundo!" (autônomo, baseado em Gradle)
Compose Multiplatform (autônomo, baseado em Gradle)
Compose em iOS (autônomo, baseado em Gradle), Android (autônomo, baseado em Gradle) e desktop (autônomo, baseado em Gradle)
Modelo de aplicativo multiplataforma Kotlin com interface de usuário compartilhada do Compose e interface de usuário nativa para Android e iOS
Interoperabilidade Gradle no Amper baseado em Gradle
E outros exemplos independentes e baseados em Gradle