【问题标题】:How to build Flutter project with Android aar file?如何使用 Android aar 文件构建 Flutter 项目?
【发布时间】: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 的工作原理。

【问题讨论】:

    标签: android dart shared-libraries aar flutter


    【解决方案1】:

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

    基本步骤:

    1. 下载 Flutter 源代码。
    2. Android Studio 中打开 flutter/examples/hello_services/android
    3. 点击文件>新建>新建模块并选择导入.JAR/.AAR包
    4. 按F4打开项目结构,然后添加依赖模块。
    5. 编写 Java 代码以调用在 aar 文件中定义的 API。
    6. flutter/examples/hello_services 导入 Intellij IDEA
    7. 构建并运行 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 添加到全新的颤振项目时会遇到这个问题...真是一团糟...
      猜你喜欢
      • 2016-12-16
      • 2022-12-02
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2016-10-22
      相关资源
      最近更新 更多