Amper ist ein Projektkonfigurations- und Build-Tool. Sein Ziel ist es, ein großartiges und reibungsloses Benutzererlebnis und IDE-Unterstützung zu bieten. Wir glauben, dass dies erreicht werden kann durch:
Bereitstellung einer entwickler- und IDE-freundlichen deklarativen Konfigurations-DSL – um nicht nur die Ersteinrichtung zu vereinfachen, sondern auch die Wartbarkeit zu verbessern und eine IDE zuverlässig bei der automatischen Konfiguration unterstützen zu lassen;
Bündelung eines kuratierten Satzes kompatibler Toolchains und Erweiterungen – um die meisten Szenarien zu unterstützen, ohne dass kompatible Plugins gefunden werden müssen;
Wählen Sie die Erweiterungspunkte sorgfältig aus, um das gesamte mentale Modell und die Benutzeroberfläche der Konfiguration konsistent zu halten und eine unerwartete Codeausführung durch Dritte zu vermeiden.
Im Wesentlichen streben wir danach, ein ähnlich durchdachtes und erprobtes Erlebnis wie mit JetBrains-IDEs zu erreichen.
Wir prüfen derzeit verschiedene Aspekte, darunter die Konfiguration von Projekten zum Erstellen, Verpacken, Veröffentlichen und mehr. Derzeit liegt der Schwerpunkt jedoch vor allem auf der Projektierung von Bauprojekten. Während der aktuelle Anwendungsfall Kotlin und Kotlin Multiplatform ist, unterstützt Amper auch Java und Swift (als Voraussetzung für Multiplattform). Der gleiche Konfigurationsansatz könnte jedoch in Zukunft auch für andere Sprachen und Technologie-Stacks funktionieren.
Amper existiert als eigenständiges Build-Tool sowie als Gradle-Plugin für bestehende Gradle-basierte Projekte. Beide Versionen bieten ein einheitliches, benutzerfreundliches, deklaratives Konfigurationsformat.
Unterstützte Funktionen:
Erstellen und Ausführen von JVM-, Android-, iOS-, Linux- und macOS-Anwendungen.
Erstellen von Kotlin-Multiplattform-Bibliotheken.
Laufende Tests.
Mischen von Kotlin-, Java- und Swift-Code.
Codeunterstützung für Moduldateien in IntelliJ IDEA und Fleet.
Projekte mit mehreren Modulen.
Verwenden von Compose Multiplatform.
Verwenden von Compose-Multiplattform-Ressourcen*.
Gradle-Interop, einschließlich der Kombination von Amper- und Gradle-Modulen in einem Projekt*.
Integration mit Gradle-Versionskatalogen*.
Gradle-kompatibles Projektlayout für die reibungslose Migration bestehender Gradle-Projekte*.
* nur in Gradle-basierten Projekten
Zukünftige Richtungen:
Unterstützung für weitere Kotlin- und Kotlin-Multiplattform-Szenarien und -Konfigurationen.
Weitere Produkttypen und Plattformen wie watchOS, Windows usw.
Plattformspezifische Testtypen, einschließlich Android-instrumentierter Tests.
Unterstützung nativer Abhängigkeiten, wie CocoaPods, Swift Package Manager.
Verpackung und Veröffentlichung.
Unterstützung für Build-Varianten.
Erweiterbarkeit.
Für einen schnellen Einstieg:
Einrichtungs- und Nutzungsanweisungen
Anleitung
Dokumentation
Beispielprojekte
Leitfaden zur Gradle-Migration
Amper nutzt YouTrack zur Problemverfolgung. Erstellen Sie dort ein neues Problem, um Probleme zu melden oder Ideen einzureichen.
Bevor Sie ein Problem melden, lesen Sie bitte die FAQ.
Sie können auch dem Slack-Kanal für Diskussionen beitreten oder Ihr Feedback über das Feedback-Formular teilen.
Es gibt mehrere Möglichkeiten, Amper auszuprobieren:
Im neuesten IntelliJ IDEA EAP, für JVM- und Android-Projekte (Anleitung).
In der neuesten JetBrains-Flotte für die JVM-, Android- und Multiplattform-Projekte (Anleitung).
Verwenden des eigenständigen Amper über die Befehlszeile.
Verwenden von Gradle-basiertem Amper über die Befehlszeile zum Erstellen von Gradle-basierten Amper-Projekten.
Hier ist eine sehr einfache JVM „Hello, World!“ Projekt:
Die Dateien main.kt
und MyTest.kt
sind nur normale Kotlin-Dateien, die nichts Besonderes enthalten. Der interessante Teil ist module.yaml
, die Konfigurationsdatei des Amper-Moduls. Für die obige Projektstruktur wäre es einfach:
# Erstellen Sie ein JVM-Anwendungsprodukt: jvm/app
Das ist es. Die Kotlin- und Java-Toolchains, das Test-Framework und andere notwendige Funktionen sind konfiguriert und sofort verfügbar. Sie können es erstellen, ausführen, Tests schreiben und ausführen und vieles mehr. Ausführlichere Informationen finden Sie im vollständigen Beispiel.
Schauen wir uns nun ein Compose Multiplatform-Projekt mit Android-, iOS- und Desktop-JVM-Apps mit der folgenden Projektstruktur in Fleet an:
Beachten Sie, dass der Ordner src/
Kotlin- und Swift-Code zusammen enthält. Es könnte natürlich auch Kotlin und Java sein. Ein weiterer hervorzuhebender Aspekt ist das gemeinsame Modul mit dem gemeinsamen Code im Ordner src
und den plattformspezifischen Codeordnern src@ios
und src@android
(weitere Informationen zum Projektlayout).
So sieht die Datei ios-app/module.yaml
aus:
# Erstellen Sie ein iOS-Anwendungsprodukt: ios/app# Abhängig vom gemeinsam genutzten Bibliotheksmodul: Abhängigkeiten: - ../sharedsettings: # Aktivieren Sie das Compose Multiplatform-Framework compose: aktiviert
Das ist ziemlich einfach: Es definiert eine iOS-Anwendung mit einer Abhängigkeit von einem gemeinsam genutzten Modul und aktiviert das Compose Multiplatform-Framework. Ein interessanteres Beispiel wäre shared/module.yaml
:
# Erzeugen Sie eine gemeinsam genutzte Bibliothek für die JVM-, Android- und iOS-Plattformen:product: type: lib platform: [jvm, android, iosArm64, iosSimulatorArm64, iosX64]# Shared Compose dependencies:dependencies: - $compose.foundation: exportiert - $compose.material3: exported# Abhängigkeiten nur für Android dependencies@android: # Android-spezifische Integration mit Compose - androidx.activity:activity-compose:1.7.2: exportiert - androidx.appcompat:appcompat:1.6.1: exported# Abhängigkeiten nur für iOS mit einer Abhängigkeit von einem CocoaPod (noch nicht implementiert)dependencies@ios: - pod: 'Alamofire' version: '~> 2.0.1'settings: # Kotlin-Serialisierung aktivieren kotlin: serialization: json # Aktivieren Sie das Compose Multiplatform-Framework compose: aktiviert
Ein paar Dinge sind erwähnenswert. Beachten Sie zunächst die plattformspezifischen Abhängigkeiten: Abschnitte mit dem Qualifikationsmerkmal @<platform>
. Der Plattformqualifizierer kann sowohl im Manifest als auch im Dateilayout verwendet werden. Der Qualifizierer organisiert den Code, die Abhängigkeiten und die Einstellungen für eine bestimmte Plattform. Zweitens ermöglicht der Abschnitt dependencies: nicht nur Kotlin- und Maven-Abhängigkeiten, sondern auch plattformspezifische Paketmanager wie CocoaPods, Swift Package Manager und andere.
Natürlich zeigen diese Beispiele nur eine begrenzte Anzahl von Amper-Funktionen. Weitere Einblicke in Design und Funktionalität erhalten Sie in der Dokumentation, im Tutorial und in Beispielprojekten.
Schauen Sie sich diese Beispielprojekte an:
JVM „Hallo Welt!“ (eigenständig, Gradle-basiert)
Compose Multiplatform (eigenständig, Gradle-basiert)
Verfassen Sie auf iOS (eigenständig, Gradle-basiert), Android (eigenständig, Gradle-basiert) und Desktop (eigenständig, Gradle-basiert)
Kotlin-Multiplattform-App-Vorlage mit gemeinsamer Compose-Benutzeroberfläche und mit nativer Android- und iOS-Benutzeroberfläche
Gradle-Interop im Gradle-basierten Amper
Und andere eigenständige und Gradle-basierte Beispiele