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

构建Flutter插件时Android Gradle Plugin报错:本地AAR依赖不支持

解决Flutter插件构建AAR时本地AAR依赖问题

问题原因

Android Gradle插件(AGP)7.0+明确禁止Library模块直接依赖本地.aar文件。因为构建AAR时,本地AAR中的类、资源不会被打包进最终生成的插件AAR中,导致下游项目引用插件时出现类找不到、资源缺失的问题。旧版AGP虽然不报错,但生成的AAR同样是损坏的。

解决方案(推荐官方方式:发布本地AAR到本地Maven仓库)

步骤1:修改插件的Android Library模块build.gradle

在rfid_c72_plugin/android/build.gradle中添加Maven发布配置,将本地AAR发布到本地Maven仓库:

group 'com.example.rfid_c72_plugin'
version '1.0'

buildscript {
    repositories {
        google()
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:7.2.2'
    }
}

rootProject.allprojects {
    repositories {
        google()
        mavenCentral()
        // 添加本地Maven仓库地址
        mavenLocal()
    }
}

apply plugin: 'com.android.library'
// 添加maven-publish插件
apply plugin: 'maven-publish'

android {
    compileSdkVersion 30
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        minSdkVersion 20
    }
    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }
}

// 配置发布本地AAR到本地Maven
publishing {
    publications {
        aar(MavenPublication) {
            // 指定要发布的AAR文件
            artifact file('libs/DeviceAPI_ver20220518_release.aar')
            
            // 设置Maven坐标,可自定义
            groupId 'com.rfid.c72'
            artifactId 'device-api'
            version '20220518'
        }
    }
}

dependencies {
    //rx Android for updating status
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
    implementation 'io.reactivex.rxjava2:rxjava:2.2.19'
    // 保留jar文件的依赖
    implementation files('libs/xUtils-2.5.5.jar')
    // 引用本地Maven中的AAR依赖
    implementation 'com.rfid.c72:device-api:20220518'
}

步骤2:发布AAR到本地Maven仓库

在终端进入插件的Android目录(rfid_c72_plugin/android),执行以下Gradle命令:

./gradlew publishToMavenLocal

执行成功后,该AAR会被发布到本地Maven仓库(默认路径:~/.m2/repository/com/rfid/c72/device-api/20220518/)。

步骤3:构建Flutter插件AAR

现在可以正常执行构建命令:

flutter build aar

备选方案:将AAR解压合并到插件模块

如果不想使用本地Maven,可将AAR解压后合并到插件模块中(适合结构简单的AAR):

  1. 解压DeviceAPI_ver20220518_release.aar,得到classes.jar、res目录、AndroidManifest.xml等文件。
  2. 将classes.jar复制到插件的libs目录下。
  3. 将res目录中的资源合并到插件模块的res目录(注意避免资源名冲突)。
  4. 将AndroidManifest.xml中的权限、组件等配置合并到插件的AndroidManifest.xml中。
  5. 修改依赖,移除本地AAR的引用,改为引用解压后的jar:
dependencies {
    // ...其他依赖
    implementation files('libs/classes.jar')
    implementation files('libs/xUtils-2.5.5.jar')
}

备选方案:创建包装模块依赖AAR

  1. 在插件的Android目录下新建一个Android Library模块(比如命名为device-api-wrapper)。
  2. 将DeviceAPI_ver20220518_release.aar复制到该模块的libs目录,在其build.gradle中添加依赖:
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.aar'])
}
  1. 在主插件模块的build.gradle中依赖这个包装模块:
dependencies {
    // ...其他依赖
    implementation project(':device-api-wrapper')
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:05:15