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

Flutter集成agora_rtc_engine插件时执行mergeDebugNativeLibs任务失败(重复libaosl.so文件)

Flutter集成agora_rtc_engine插件时执行mergeDebugNativeLibs任务失败(重复libaosl.so文件)

FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':app:mergeDebugNativeLibs'.
A failure occurred while executing com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction
2 files found with path 'lib/arm64-v8a/libaosl.so' from inputs:
/Users/i-lanamtechnologies/.gradle/caches/8.11.1/transforms/2357939aaf75b7f859b9c7cb5d4e6444/transformed/jetified-agora-rtm-2.2.1/jni/arm64-v8a/libaosl.so
/Users/i-lanamtechnologies/.gradle/caches/8.11.1/transforms/29302f137b0c7a19cb642ff879fa4bc1/transformed/jetified-aosl-1.2.13.1/jni/arm64-v8a/libaosl.so
If you are using jniLibs and CMake IMPORTED targets, see https://developer.android.com/r/tools/jniLibs-vs-imported-targets

我太懂这种Native库冲突的糟心了——你已经试过调整agora_rtc_engine版本、升级Flutter、更新Gradle配置,但还是卡在这里。别着急,咱们从冲突的根源(重复的libaosl.so文件)入手,一步步解决:

1. 给packagingOptions补上冲突so的优先选择规则

你已经配置了libc++_shared.so的pickFirst规则,但漏掉了引发冲突的libaosl.so。直接在**app模块的build.gradle**里把这个文件加入规则,告诉Gradle遇到重复时取第一个找到的版本即可:

android {
    // 保留你原有的其他配置
    packagingOptions {
        pickFirst 'lib/x86/libc++_shared.so'
        pickFirst 'lib/x86_64/libc++_shared.so'
        pickFirst 'lib/armeabi-v7a/libc++_shared.so'
        pickFirst 'lib/arm64-v8a/libc++_shared.so'
        // 新增针对libaosl.so的规则,覆盖所有CPU架构
        pickFirst 'lib/arm64-v8a/libaosl.so'
        pickFirst 'lib/armeabi-v7a/libaosl.so'
        pickFirst 'lib/x86/libaosl.so'
        pickFirst 'lib/x86_64/libaosl.so'
    }

    sourceSets {
        main {
            jniLibs {
                useLegacyPackaging = true
            }
        }
    }
}

2. 彻底清理项目缓存,避免残留干扰

Gradle的缓存有时候会“记仇”,哪怕改了配置也会用旧的依赖文件。执行这几条命令清干净:

# 清理Flutter项目的本地缓存
flutter clean

# 进入Android目录,清理Gradle缓存并强制刷新所有依赖
cd android
./gradlew clean build --refresh-dependencies

完成后回到项目根目录,重新运行flutter run试试。

3. 排查重复的依赖引入

从错误日志看,冲突来自agora-rtm-2.2.1和aosl-1.2.13.1两个包:

  • 先打开你的pubspec.yaml,检查有没有直接引入aosl相关的Flutter插件,如果有的话,暂时注释掉这个插件,再运行项目——如果冲突消失,说明这个插件和agora_rtc_engine的依赖树有重叠,你需要找两者兼容的版本组合。
  • 如果没有直接引入aosl插件,那大概率是agora_rtc_engine的依赖链间接拉了aosl,而你项目里的其他依赖也拉了不同版本的aosl。这种情况可以在**项目根目录的android/build.gradle**里强制所有依赖使用同一个版本的aosl/agora-rtm:
allprojects {
    repositories {
        // 你的仓库配置(如maven、jcenter等)
    }
    configurations.all {
        resolutionStrategy {
            // 强制所有依赖使用指定版本的aosl
            force 'io.agora.aosl:aosl:1.2.13.1'
            // 或者如果是agora-rtm的版本问题,强制锁定其版本
            force 'io.agora.rtm:agora-rtm:2.2.1'
        }
    }
}

4. 尝试切换到agora_rtc_engine的特定兼容版本

你提到已经降级过插件,但可以试试更精准的版本——比如和你的Flutter 3.32.2完全匹配的官方推荐版本,比如6.4.0或6.3.0。替换pubspec.yaml里的版本号后,执行flutter pub get,再配合清理缓存的操作。

如果以上方法都不行,再检查一下项目里有没有手动添加的jniLibs目录,里面是不是也放了libaosl.so,如果有的话删掉即可。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 08:04:50