使用 .aar 模块的 Flutter 插件在示例应用程序中构建和运行良好,但无法在其他应用程序中构建
Posted
技术标签:
【中文标题】使用 .aar 模块的 Flutter 插件在示例应用程序中构建和运行良好,但无法在其他应用程序中构建【英文标题】:Flutter plugin that uses .aar modules builds and runs fine in the example app but fails to build in a different app 【发布时间】:2021-03-13 13:31:23 【问题描述】:我编写了一个 Flutter 插件来使用需要包含一些 .aar 模块的 SDK。它在插件的示例应用程序中构建和运行完美,但是当我在另一个应用程序中导入插件并尝试构建它时,构建立即失败,并显示一条消息,指出在插入。这是没有意义的,因为模块肯定存在 - 如果模块不存在,则在示例应用程序中使用 SDK 的平台通道将失败。
为什么示例应用可以毫无问题地构建和运行,而其他应用却不会?我唯一能想到的是我从我的 pubspec 中的路径导入插件,但在我看来这不太可能是罪魁祸首。
如有任何建议或帮助,我们将不胜感激。蒂亚!
【问题讨论】:
通过参考您提到的错误可能IDE无法找到模块的路径,请确保您正确导入aar模块并检查路径检查是否有帮助@987654321 @ 此外,如果您可以附上错误的一些屏幕截图,以及 aar 模块的确切位置以及它是如何被包含的,那么这个问题需要更多信息来帮助您解决问题,人们会更好地帮助您。 @maheshmnj 感谢您的回复。在导入 aar 模块时,我确实特别确保了我遵循 SDK 提供的说明。正如我所说,由于示例应用程序运行没有问题,很明显我做对了。从另一个应用程序的路径导入插件时会出现此问题。具体消息为:Project with path ':module' could not be found in project ':plugin'.
(非实名)。我也确实按照您链接到的答案中的说明进行操作,但没有任何改变。
@maheshmnj 我导入 aar 模块的步骤是:1) 文件 > 新模块 > 导入 .aar 包 > 从文件中选择 .aar > 完成 2) 项目结构 > 模块 > + .我刚刚选择的 aar 模块 3) 项目结构 > 依赖项 > 我的项目 > + 我刚刚添加的模块 4) 确保依赖项在 build.gradle 中列出
发生在我身上的事情是使用 api
而不是 implementation
在 build.gradle 中添加依赖项,因为 developer.android.com/studio/build/dependencies 说 implementation
阻止模块被其他模块访问,而api
允许其他模块访问。但是,这样做不会产生任何变化。
【参考方案1】:
我明白了!!!!
答案如下:How to add .aar dependency in library module?
这个适应Flutter插件的方式如下:
-
在插件中
android
项目的根目录下添加libs
文件夹。在此处添加 .aar
文件。
在插件的build.gradle
文件中,将rootProject.allProjects
更新为如下所示:
repositories
google()
jcenter()
flatDir
dirs 'libs'
dirs project(':your_plugin_name_here').file('libs')
-
仍然在同一个 build.gradle 中,添加您的
.aar
文件作为依赖项,如下所示:
implementation(name:'aar_name_here', ext:'aar')
-
在您要使用该插件的 Flutter 应用中,打开应用级
build.gradle
文件并添加 插件本身 作为依赖项,如下所示:
android
...
dependencies
implementation project(':your_flutter_plugin');
-
在我们使用插件的应用程序的
settings.gradle
文件中,更改
include ':app'
到
include ':app', ':your_flutter_plugin'
应该这样做!!
【讨论】:
对我来说这行不通。我将implementation(name:'aar_name_here', ext:'aar')
添加到消费项目的 build.gradle
中,而不是 settings.gradle
调整。以上是关于使用 .aar 模块的 Flutter 插件在示例应用程序中构建和运行良好,但无法在其他应用程序中构建的主要内容,如果未能解决你的问题,请参考以下文章
flutter打包aar并上传Maven私服,flutter模块与原生工程解耦
flutter打包aar并上传Maven私服,flutter模块与原生工程解耦