开发者社区> 问答> 正文

flutter android 原生集成mPaaS扫码组件以后,运行报错找不到 so库

根据文档对flutter项目接入mPaaS扫码组件以后
使用打开flutter 原生Android项目可以正常运行项目,
但是使用flutter工程运行,报错提示:
java.util.concurrent.ExecutionException: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/xxx包名-jAyFg4p3ciNQxoyNS6r5lQ==/base.apk"],nativeLibraryDirectories=[/data/app/xxx包名-jAyFg4p3ciNQxoyNS6r5lQ==/lib/arm64, /data/app/xxx包名-jAyFg4p3ciNQxoyNS6r5lQ==/base.apk!/lib/arm64-v8a, /system/lib64, /hw_product/lib64, /system/product/lib64]]] couldn't find "libflutter.so",

架构配置是按照文档设置:
ndk {
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a"
}

从build文件中的apk文件解压查看lib文件夹,其中除了 armeabi-v7a 文件夹下有这个libflutter.so 文件,其他的架构文件夹下都没有。
如果ndk配置只用armeabi-v7a,在荣耀9X 真机运行又一直卡在
Installing build\app\outputs\apk\app.apk…

请问如何处理啊

展开
收起
1423922824634762 2023-08-22 17:13:00 153 0
1 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    如何正确的提问,得到有效帮助


    我已经认真阅读了 你的问题:

    【 flutter android 原生集成mPaaS扫码组件以后,运行报错找不到 so库

    并思考了

    建议如下:


    这个问题是因为在运行 Flutter 项目时,找不到 mPaaS 扫码组件所需的 so 库。这个库可能在原生 Android 项目中被正确添加了,但是在 Flutter 项目中没有正确添加。
    要解决这个问题,你需要将 mPaaS 扫码组件的 so 库添加到 Flutter 项目的 android/app/src/main/libs 目录下。这里是一些步骤来解决这个问题:

    1. 将 mPaaS 扫码组件的 so 库从原生 Android 项目的 libs 目录复制到 Flutter 项目的 android/app/src/main/libs 目录下。
    2. 在 Flutter 项目的 android/app/build.gradle 文件中,添加以下代码:

    android {
    //...
    sourceSets {
    main {
    jniLibs.srcDirs = ['src/main/libs']
    }
    }
    }
    CopyCopy

    这将告诉 Gradle 在构建过程中将 so 库包含在输出的 APK 文件中。

    1. 运行 Flutter 项目。现在应该可以正常运行,不再报找不到 so 库的错误。
      如果问题仍然存在,请检查以下几点:
    • 确保 so 库是 ARMv7 架构的,因为 Flutter 项目默认使用这个架构。
    • 确保在原生 Android 项目中正确导入了 mPaaS 扫码组件的 so 库。
    • 检查 Flutter 项目中的 android/app/build.gradle 文件,确保没有错误或遗漏。
    2023-08-26 15:20:29
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
问答排行榜
最热
最新

相关电子书

更多
基于flutter的产品应用实践 立即下载
《Flutter in action》 立即下载
闲鱼《Flutter 技术解析与实战》 立即下载