如何使用 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,而无需合并代码