使用 .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?

flutter 插件引入安卓aar包

flutter打包aar并上传Maven私服,flutter模块与原生工程解耦

flutter打包aar并上传Maven私服,flutter模块与原生工程解耦

flutter打包aar并上传Maven私服,flutter模块与原生工程解耦

flutter打包aar并上传Maven私服,flutter模块与原生工程解耦