如何使用 Android aar 文件构建 Flutter 项目?

How to build Flutter project with Android aar file?

我想使用 Flutter 创建一个 Android 应用程序,它依赖于包装在 aar[=19 中的第三方 SDK =] 文件。到目前为止,我只找到了文章Accessing Platform and Third-Party Services in Flutter。看来我必须使用 Android Studio 使用额外的 Java 文件构建 Flutter 项目。这很复杂,不是我想要的。 在Dart代码中有没有办法直接加载aar文件或*.so文件?类似于 JNI 的工作方式。

在学习了 Flutter 示例后 - hello services,我已经使用 aar 文件成功构建了我的 Flutter 项目。

基本步骤:

  1. 下载 Flutter 源代码。
  2. Android Studio.
  3. 中打开 flutter/examples/hello_services/android
  4. 单击文件 > 新建 > 新建模块 并选择导入 .JAR/.AAR 包
  5. 按F4打开Project Structure,然后添加依赖模块
  6. 编写 Java 代码来调用在 aar 文件中定义的 API。
  7. flutter/examples/hello_services导入Intellij IDEA
  8. 构建并运行 Flutter 应用程序。

我已将 source code 推送到 GitHub。

Flutter 可以作为源代码 Gradle 子项目或作为 AAR 逐步嵌入到您现有的 Android 应用程序中。

取决于 Android 存档 (AAR)

此选项将您的 Flutter 库打包为由 AAR 和 POM 工件组成的通用本地 Maven 存储库。此选项允许您的团队在不安装 Flutter SDK 的情况下构建主机应用程序。然后,您可以从本地或远程存储库分发工件。

假设您在 some/path/my_flutter 构建了一个 Flutter 模块,然后 运行:

 cd some/path/my_flutter
 flutter build aar

然后,按照on-screen说明进行整合。

更具体地说,此命令创建(默认所有 debug/profile/release 模式)本地存储库,其中包含以下文件:

build/host/outputs/repo
└── com
    └── example
        └── my_flutter
            ├── flutter_release
            │   ├── 1.0
            │   │   ├── flutter_release-1.0.aar
            │   │   ├── flutter_release-1.0.aar.md5
            │   │   ├── flutter_release-1.0.aar.sha1
            │   │   ├── flutter_release-1.0.pom
            │   │   ├── flutter_release-1.0.pom.md5
            │   │   └── flutter_release-1.0.pom.sha1
            │   ├── maven-metadata.xml
            │   ├── maven-metadata.xml.md5
            │   └── maven-metadata.xml.sha1
            ├── flutter_profile
            │   ├── ...
            └── flutter_debug
                └── ...

要依赖 AAR,宿主应用程序必须能够找到这些文件。

为此,请在您的主机应用程序中编辑 app/build.gradle,使其包含本地存储库和依赖项:

android {
  // ...
}

repositories {
  maven {
    url 'some/path/my_flutter/build/host/outputs/repo'
    // This is relative to the location of the build.gradle file
    // if using a relative path.
  }
  maven {
    url 'https://storage.googleapis.com/download.flutter.io'
  }
}

dependencies {
  // ...
  debugImplementation 'com.example.flutter_module:flutter_debug:1.0'
  profileImplementation 'com.example.flutter_module:flutter_profile:1.0'
  releaseImplementation 'com.example.flutter_module:flutter_release:1.0'
}

提示:您还可以在 Android Studio 中使用 Build > Flutter > Build AAR 菜单为您的 Flutter 模块构建 AAR。

您的应用现在包含 Flutter 模块作为依赖项。您可以按照将 Flutter 屏幕添加到 Android 应用.

中的后续步骤操作

有关详细信息,请参阅 Integrate a Flutter module into your Android project

如果您想将 .aar 文件添加到您的 Flutter 项目并在 Android Studio 中遇到问题说

" 无法理解 Gradle 设置文件,请手动添加路径 ':moduleName'"

this tutorial 是如何将 Android .aar 模块手动添加到您的 flutter 项目中。

https://www.programmersought.com/article/84681807320/