You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter插件中正确引入Android本地.aar依赖库

Flutter插件Android端本地.aar依赖集成方案

构建Flutter插件Android端AAR产物时,Gradle默认不支持library模块直接通过implementation files('xxx.aar')的方式引用本地AAR文件,常规flatDir配置方案在插件场景下失效的核心原因是:插件AAR构建流程不会将flatDir引用的本地AAR打入最终插件产物的依赖列表,宿主App集成插件时会出现依赖缺失、类找不到的问题。以下是两种生产环境验证过的可行方案:

方案一:本地Maven仓库依赖(推荐,无兼容问题)

这个方案适配所有版本的Flutter、Gradle,支持自定义AAR自带传递依赖的场景,后续升级SDK版本维护成本低。

  • 第一步:在插件项目的android目录下新建repo文件夹,作为插件内置的本地Maven仓库根目录
  • 第二步:将需要集成的自定义.aar文件,按照Maven仓库规范放入对应目录结构。举个例子,若你的自定义SDK组ID为com.custom.sdk,组件ID为core,版本号为2.1.0,对应AAR文件名为core-2.1.0.aar,则目录结构如下:
android/
└── repo/
    └── com/
        └── custom/
            └── sdk/
                └── core/
                    └── 2.1.0/
                        ├── core-2.1.0.aar
                        └── core-2.1.0.pom
  • 第三步:在上述版本目录下创建对应.pom文件,写入基础配置即可,若自定义AAR有其他第三方依赖,直接在pom的dependencies节点追加声明即可,基础pom内容参考:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.custom.sdk</groupId>
    <artifactId>core</artifactId>
    <version>2.1.0</version>
    <packaging>aar</packaging>
</project>
  • 第四步:修改插件android/build.gradle文件,在repositories块中新增本地Maven仓库配置(注意不要只配置在buildscript下的repositories块,否则主工程依赖时找不到仓库地址):
rootProject.allprojects {
    repositories {
        maven {
            url uri('./repo')
        }
        // 保留原有的google、mavenCentral等仓库配置
    }
}
  • 第五步:在dependencies块中通过Maven坐标方式依赖自定义AAR即可:
dependencies {
    implementation 'com.custom.sdk:core:2.1.0'
}

配置完成后正常构建插件,Gradle会自动将本地Maven仓库中的AAR纳入插件的依赖传递链路,宿主App集成插件时不需要额外配置仓库地址,可自动拉取对应依赖。

方案二:AAR内容合并(轻量方案,适合简单依赖场景)

如果你的自定义AAR没有额外传递依赖,且后续升级频率很低,可以直接解压AAR将内容合并到插件Android模块中,不需要配置Maven结构:

  • 将.aar文件作为压缩包解压,取出根目录下的classes.jar,重命名为方便识别的名称(比如custom-sdk-core.jar),放入插件android模块的libs目录,通过implementation files('libs/custom-sdk-core.jar')方式依赖
  • 将解压后res目录下的所有资源文件,合并到插件android模块的src/main/res对应子目录下
  • 对照解压后的AndroidManifest.xml内容,将需要的权限、组件声明合并到插件模块的AndroidManifest.xml中
  • 如果AAR内包含native so库,将解压后jni目录下各架构的so文件,放入插件android模块的src/main/jniLibs对应架构目录下

常见避坑点

  • 不要使用flatDir配置方式引用本地AAR:该配置仅对当前模块的本地构建生效,插件被其他项目引用时相对路径会直接失效,触发类找不到错误
  • 不要尝试直接在dependencies中用files方式引用libs目录下的AAR:该写法会直接触发构建报错,没有可绕过的Gradle配置开关
  • 如果自定义AAR存在传递依赖,一定要在pom文件中完整声明对应依赖坐标,否则宿主App运行时会抛出NoClassDefFoundError

内容的提问来源于stack exchange,提问作者Wei Wen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 23:45:45