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

Flutter插件中native依赖未复制到Android nativeLibraryDir问题求助

问题核心原因

你遇到的现象是典型的Android原生库未解压配置导致的问题:从Android 6.0开始系统支持原生库直接从APK内加载无需解压到本地目录,AGP 3.6+版本默认开启该特性,所以会出现APK内包含.so文件、App可以正常运行,但context.nativeLibraryDir路径下找不到对应文件的情况。

解决方案
  • 核心配置修改:在你插件的AndroidManifest.xml和示例宿主App的AndroidManifest.xml的<application>节点中,添加android:extractNativeLibs="true"属性。该属性设置为true后,系统安装APK时会将所有原生库解压到context.nativeLibraryDir路径下,满足你将.so作为可执行文件调用的需求。
  • 确认ABI过滤配置:在示例App的build.gradle的defaultConfig块中添加对应ABI的过滤规则,确保你需要的架构的.so文件被打包和解压:
ndk {
    abiFilters 'arm64-v8a', 'x86', 'armeabi-v7a' // 按需添加你需要支持的架构
}
  • 原有打包配置保留:你当前插件build.gradle中的sourceSets配置是正确的,已经可以将jniLibs下的原生库打进APK,不需要修改。
额外说明

你观察到的libflutter.so不在nativeLibraryDir但App正常运行的现象也符合上述逻辑:当extractNativeLibs为false时,系统原生库加载器会直接从APK的lib目录读取.so文件完成加载,不需要解压到本地路径,所以不会触发崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:15:03