Amper 是一个项目配置和构建工具。其目标是提供出色、流畅的用户体验和 IDE 支持,我们相信这可以通过以下方式实现:
提供对开发人员和 IDE 友好的声明性配置 DSL - 不仅可以简化初始设置,还可以提高可维护性,并让 IDE 可靠地协助自动配置;
捆绑一组精选的兼容工具链和扩展 - 支持大多数场景,而无需寻找兼容的插件;
仔细选择可扩展点 - 保持配置的整体心智模型和用户体验一致,并避免意外的第三方代码执行。
本质上,我们的目标是实现与 JetBrains IDE 类似的经过深思熟虑和经过充分测试的体验。
我们目前正在研究各个方面,包括构建、打包、发布等项目的配置。然而,现阶段的重点主要是配置项目以进行构建。虽然当前的用例是 Kotlin 和 Kotlin 多平台,但 Amper 还支持 Java 和 Swift(作为多平台的要求)。然而,相同的配置方法将来也可以适用于其他语言和技术堆栈。
Amper 作为独立的构建工具以及现有基于 Gradle 的项目的 Gradle 插件而存在。两个版本都提供统一的、易于使用的声明性配置格式。
支持的功能:
创建并运行 JVM、Android、iOS、Linux 和 macOS 应用程序。
创建 Kotlin 多平台库。
运行测试。
混合 Kotlin、Java 和 Swift 代码。
IntelliJ IDEA 和 Fleet 中模块文件的代码帮助。
多模块项目。
使用 Compose 多平台。
使用 Compose 多平台资源*。
Gradle 互操作,包括将 Amper 和 Gradle 模块组合到一个项目中*。
与 Gradle 版本目录集成*。
Gradle 兼容的项目布局,可平滑迁移现有 Gradle 项目*。
* 仅在基于 Gradle 的项目中
未来方向:
支持更多 Kotlin 和 Kotlin 多平台场景和配置。
更多产品类型和平台,如watchOS、Windows等
特定于平台的测试类型,包括 Android 仪器测试。
本机依赖项支持,例如 CocoaPods、Swift Package Manager。
包装和出版。
构建变体支持。
可扩展性。
快速开始:
设置和使用说明
教程
文档
示例项目
Gradle 迁移指南
Amper 使用 YouTrack 进行问题跟踪,在那里创建新问题来报告问题或提交想法。
在报告问题之前,请先查看常见问题解答。
您还可以加入 Slack 频道进行讨论,或使用反馈表分享您的反馈。
尝试 Amper 的方法有多种:
在最新的 IntelliJ IDEA EAP 中,适用于 JVM 和 Android 项目(说明)。
在最新的 JetBrains Fleet 中,适用于 JVM、Android 和多平台项目(说明)。
从命令行使用独立的 Amper。
从命令行使用基于 Gradle 的 Amper 构建基于 Gradle 的 Amper 项目。
这是一个非常基本的 JVM“Hello, World!”项目:
main.kt
和MyTest.kt
文件只是常规的 Kotlin 文件,没有什么特别的。有趣的部分是module.yaml
,它是 Amper 模块配置文件。对于上述项目结构,它只是:
# 生产一个JVM应用产品:jvm/app
就是这样。 Kotlin 和 Java 工具链、测试框架和其他必要的功能均经过配置,开箱即用。您可以构建它、运行它、编写和运行测试等等。有关更多详细信息,请查看完整示例。
现在,让我们看一下包含 Android、iOS 和桌面 JVM 应用程序的 Compose 多平台项目,在 Fleet 中具有以下项目结构:
请注意src/
文件夹如何同时包含 Kotlin 和 Swift 代码。当然,也可以是 Kotlin 和 Java。另一个需要强调的方面是共享模块,其中包含src
文件夹中的通用代码以及特定于平台的代码文件夹src@ios
和src@android
(了解有关项目布局的更多信息)。
以下是ios-app/module.yaml
文件的外观:
# 生成一个iOS应用程序product: ios/app# 依赖共享库模块: dependency: - ../sharedsettings: # 启用 Compose 多平台框架 compose:enabled
这非常简单:它定义了一个依赖于共享模块的 iOS 应用程序,并启用了 Compose 多平台框架。一个更有趣的例子是shared/module.yaml
:
# 为 JVM、Android 和 iOS 平台生成共享库:product: type: lib platform: [jvm, android, iosArm64, iosSimulatorArm64, iosX64]# Shared Compose dependency:dependencies: - $compose.foundation:导出 - $compose.material3:导出#仅适用于Android的依赖项dependency@android:#Android特定的与Compose的集成 - androidx.activity:activity-compose:1.7.2: 导出 - androidx.appcompat:appcompat:1.6.1: 导出#仅限 iOS 的依赖项,并依赖于 CocoaPod(尚未实现)dependency@ios: - pod: 'Alamofire' version: '~> 2.0.1'settings: # 启用 Kotlin 序列化 kotlin: serialization: json # 启用 Compose 多平台框架 compose:enabled
有几件事值得一提。首先,请注意特定于平台的依赖关系:带有@<platform>
限定符的部分。平台限定符既可以在清单中使用,也可以在文件布局中使用。限定符组织特定平台的代码、依赖项和设置。其次,dependency: 部分不仅允许 Kotlin 和 Maven 依赖项,还允许特定于平台的包管理器,例如 CocoaPods、Swift Package Manager 等。
当然,这些示例仅展示了一组有限的 Amper 功能。要更深入地了解设计和功能,请查看文档、教程和示例项目。
检查我们的这些示例项目:
JVM“你好,世界!” (独立,基于 Gradle)
Compose 多平台(独立、基于 Gradle)
在 iOS(独立、基于 Gradle)、Android(独立、基于 Gradle)和桌面(独立、基于 Gradle)上撰写
具有共享 Compose UI 以及本机 Android 和 iOS UI 的 Kotlin 多平台应用程序模板
基于 Gradle 的 Amper 中的 Gradle 互操作
以及其他独立和基于 Gradle 的示例