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

从原生AAR启动Flutter Activity崩溃问题排查求助

解决Flutter集成AAR打包后缺失依赖的崩溃问题

核心原因

你的Android项目打包成AAR时,默认不会将依赖的Flutter AAR及Flutter核心库打包进去,导致宿主项目缺少Flutter相关类,引发ClassNotFoundException。

具体解决步骤

1. 配置依赖传递

在你要打包成AAR的Android模块的build.gradle中,将Flutter相关依赖的implementation改为api,让依赖能传递给宿主项目:

// 替换原有的implementation为api
api files('libs/flutter_release.aar') // 你导入的Flutter导出AAR
api 'io.flutter:flutter_embedding_release:x.x.x' // 版本号需与你使用的Flutter SDK完全匹配

注意:flutter_embedding_release的版本要和Flutter项目pubspec.lock里的Flutter版本一致。

2. 确保打包时保留依赖声明

如果使用旧版Gradle,在模块的build.gradle中添加如下配置(新版Gradle通常无需此操作):

android {
    // 其他配置...
    publishNonDefault true
}

3. 宿主项目配置Flutter仓库

在宿主项目的根build.gradle中添加Flutter仓库地址,让宿主能拉取到依赖:

allprojects {
    repositories {
        // 其他仓库...
        maven {
            url "${flutterSdkPath}/bin/cache/artifacts/engine/android-release"
        }
    }
}

其中flutterSdkPath替换为你本地Flutter SDK的实际路径。

4. 验证依赖传递有效性

打包你的Android模块AAR后,解压查看其中的pom.xml文件,确认里面包含Flutter相关的依赖声明,确保宿主项目引入时能自动下载这些依赖。

5. 备选方案:强制打包Flutter核心库(不推荐)

如果宿主项目无法配置Flutter仓库,可将Flutter核心库打包进你的AAR(会增大体积且易引发版本冲突):

  • 将Flutter的flutter_release.aar和flutter_embedding_release.aar复制到模块libs目录
  • 在build.gradle中配置:
android {
    packagingOptions {
        pickFirst '**/*.so'
        merge '**/AndroidManifest.xml'
    }
}
dependencies {
    implementation (files('libs/flutter_release.aar'), files('libs/flutter_embedding_release.aar')) {
        transitive = true
    }
}

额外注意事项

  • 确保IntegratedActivity在AndroidManifest.xml中正确声明,包含FlutterActivity所需配置:
<activity
    android:name=".IntegratedActivity"
    android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
    android:hardwareAccelerated="true"
    android:windowSoftInputMode="adjustResize">
    <meta-data
        android:name="io.flutter.embedding.android.NormalTheme"
        android:resource="@style/NormalTheme" />
</activity>
  • 宿主项目的minSdkVersion不能低于Flutter要求的版本(通常为API 16及以上)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:07:06