CL_Strive 2024-03-14 11:13 采纳率: 0%
浏览 98

libflutter.so not found

flutter项目 打包64位apk 安装在真机上闪退

Zip: lseek on fd -2 failed: Bad file descriptor
10:49:44.906  3332-3332  Flutt...ader pid-3332              E  Flutter initialization failed.
                                                               java.util.concurrent.ExecutionException: java.lang.UnsatisfiedLinkError: dlopen failed: library "libflutter.so" not found

打包32位在真机上可以正常运行,查看两个安装包的区别,发现64位包里缺少了很多的so文件。
网上尝试了很多方法 都无法解决问题

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-14 11:14
    关注

    引自免费微信小程序:皆我百晓生

    在您的问题中,Flutter项目打包的64位apk安装在真机上闪退,并提示“libflutter.so not found”,同时您发现64位包里缺少很多so文件。这表明在构建64位版本的应用时,可能未正确包含或链接必要的原生库。

    以下是针对此问题的一系列排查和解决步骤:

    1. 检查Gradle配置: 确保您在android/app/build.gradle中的defaultConfig部分指定了正确的abiFilters以包含64位架构:
    android {
        defaultConfig {
            ...
            ndk {
                abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' // 添加对64位的支持
            }
        }
    }
    
    1. 清理并重新构建项目: 执行以下命令来清理缓存并重新生成所有必要的资源和库:
    flutter clean
    flutter build apk --split-per-abi
    
    1. 检查Flutter SDK版本: 确保您的Flutter SDK是最新版或者至少支持64位编译的版本。您可以运行flutter doctor检查更新并升级到最新版。

    2. 检查第三方依赖: 如果您的项目中有使用到第三方插件,确认这些插件也提供了对应的64位so库。若缺失,需要找到支持64位架构版本的插件替换或联系插件作者获取更新。

    3. 手动检查APK内容: 将生成的64位apk(通常为build/app/outputs/apk/release/app-arm64-v8a-release.apk)解压后查看lib/arm64-v8a目录下是否存在libflutter.so以及其他必要的so文件。

    如果以上步骤都未能解决问题,请尝试完全卸载旧应用并重启设备后再进行安装,有时残留的旧安装可能会干扰新应用的加载。此外,可以考虑创建一个新的 Flutter 项目,仅集成基础功能然后尝试打包64位apk测试,排除其他可能引入问题的因素。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月14日