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

Posted

技术标签:

【中文标题】如何使用 Android aar 文件构建 Flutter 项目?【英文标题】:How to build Flutter project with Android aar file? 【发布时间】:2017-05-30 20:35:02 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

基本步骤:

    下载 Flutter 源代码。 在 Android Studio 中打开 flutter/examples/hello_services/android。 点击文件>新建>新建模块并选择导入.JAR/.AAR包。 按F4打开项目结构,然后添加依赖模块。 编写 Java 代码以调用在 aar 文件中定义的 API。 将 flutter/examples/hello_services 导入 Intellij IDEA。 构建并运行 Flutter 应用。

我已将source code 推送到 GitHub。

【讨论】:

不幸的是,flutter/examples/hello_services 不再存在。有flutter/examples/platform_channel现在可以这样做吗? @TedHenry。您不需要示例应用程序。您可以通过在 android studio 中打开“Android”文件夹并按照包含 aar 文件的基本步骤来简单地包含依赖项。然后使用方法通道调用本机函数。【参考方案2】:

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

然后,按照屏幕上的说明进行集成。

更具体地说,此命令创建(默认为所有调试/配置文件/发布模式)一个本地存储库,其中包含以下文件:

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 模块作为依赖项。您可以按照向 Android 应用添加 Flutter 屏幕中的后续步骤操作。

欲了解更多信息,请参阅Integrate a Flutter module into your Android project

【讨论】:

【参考方案3】:

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

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

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

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

【讨论】:

能否在链接周围添加上下文以防万一它中断,好吗?谢谢! 哦,伙计,我遇到了完全相同的错误...实际上,您在尝试将 aar 添加到全新的颤振项目时会遇到这个问题...真是一团糟...

以上是关于如何使用 Android aar 文件构建 Flutter 项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何发布带有远程依赖项 (gradle) 的 Android 库 (aar)?

如何在Android库AAR中包含第三方JAR,而无需合并代码

怎样使用Android Studio引用本地aar文件

如何使用 Jenkins 为相同的源代码构建 .jar 和 .aar 人工制品

Android AAR 工件发布在组装之前执行

怎样使用Android Studio引用本地aar文件