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

如何在Flutter Plugin中导入aar文件?已尝试方案均无效

在Flutter Plugin中导入本地AAR文件的解决方案

直接在Flutter项目中导入AAR文件操作简单,但在Flutter Plugin中会遇到如下报错:

构建AAR时不支持直接依赖本地.aar文件。生成的AAR会损坏,因为本地.aar文件依赖的类和Android资源不会被打包到最终的AAR中。旧版本的Android Gradle Plugin在这种情况下也会生成损坏的AAR(尽管不会抛出该错误)。

尝试使用compileOnly fileTree(dir: 'libs', include: ['*.aar'])仅能完成编译,实际项目中无法正常导入使用。以下是经过验证的可行方案:

方案一:转为本地Maven仓库依赖(推荐)

这种方式从根源上解决直接依赖本地AAR的打包问题,是最稳定的方案:

  1. 在Flutter Plugin的android目录下新建local-repo文件夹,将目标AAR文件放入其中。
  2. 在android/build.gradle的allprojects.repositories中添加本地Maven仓库配置:
allprojects {
    repositories {
        google()
        mavenCentral()
        // 添加本地Maven仓库
        maven {
            url uri('./local-repo')
        }
    }
}
  1. 为AAR生成对应的POM文件:
    • 在local-repo下创建层级目录,格式为[groupId]/[artifactId]/[version],例如com/example/mylibrary/1.0.0
    • 将AAR文件重命名为[artifactId]-[version].aar(如mylibrary-1.0.0.aar)后放入该目录
    • 同目录下创建[artifactId]-[version].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.example</groupId>
  <artifactId>mylibrary</artifactId>
  <version>1.0.0</version>
  <packaging>aar</packaging>
</project>
  1. 在Plugin的android/build.gradle的dependencies中添加依赖:
implementation 'com.example:mylibrary:1.0.0'

方案二:使用flatDir配合implementation

若不想转为Maven仓库,可采用此方式,但需额外配置确保打包时AAR内容被正确包含:

  1. 在Plugin的android/build.gradle中配置flatDir仓库:
repositories {
    google()
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}
  1. 将AAR文件放入android/libs目录,在dependencies中添加依赖:
implementation(name: 'mylibrary', ext: 'aar')
  1. 添加打包配置,确保AAR的资源和JNI库被包含到最终产物中:
android {
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

// 复制AAR到打包目录
task copyAARResources(type: Copy) {
    from file('libs/mylibrary.aar')
    into 'build/intermediates/merged_aar_jni_libs/release/out/lib'
}

// 关联打包任务
tasks.whenTaskAdded { task ->
    if (task.name.startsWith('assemble')) {
        task.dependsOn copyAARResources
    }
}

方案三:解压AAR嵌入源码(适合小型AAR)

如果AAR体积较小,可直接解压后将内容嵌入Plugin源码:

  1. 解压AAR文件,得到classes.jar、res、jni等目录。
  2. 将classes.jar放入android/libs,添加依赖:
implementation files('libs/classes.jar')
  1. 将res目录下的资源复制到Plugin的android/src/main/res目录,注意避免资源名冲突。
  2. 若AAR包含JNI库,将jni下的文件复制到android/src/main/jniLibs目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:47:43