引发的原因

导致这个问题出现的原因是因为我们在项目种使用了so库,或者项目中引用的三方sdk使用了so库。在引用so库时需要针对不同的cpu架构使用不同的.so文件。armeabi,armeabi-v7a,x86,arm64-v8a,大家通常会对这几个cpu架构进行适配。然而问题就出在现在Flutter在打包Apk时不能同时引入arm32和arm64的libflutter.so。我门将打好包的Apk安装到arm64架构(默认打包会引入arm32)的手机上时就出现了couldn't find libflutter.so这个异常。

如何解决

  1. 针对arm32和arm64分别打包(flutter 提供了命令来之分别对arm32和arm64分别打包)

    • flutter build apk --target-platform=android-arm32

    • flutter build apk --target-platform=android-arm64

    我们用flutter build apk --target-platform=android-arm64打包apk,并在arm64cpu架构的手机安装运行,很好完美运行。但是当我们吧apk安装到32位时问题再次出现,原因就不再重复了。很显然到这里这个方式并不能解决这个问题,为了适配arm32和arm64我们需要分别打包,而国内大部分应用市场不能针对不同cpu架构上传不同的apk。

  2. 不对arm64做适配,打包时排除其他非arm32架构的so文件

    这时候有些朋友可能会又疑问,问题不就是因为打包时没有引入arm64的libflutter的so文件导致在arm64架构手机上出现“兼容”问题的么。这里简单说一点关于引用so库的一些知识,了解的朋友大家直接跳过就可以。arm64cpu架构是可以像下兼容的,简单点就是arm64架构的cpu可以使用arm32的.so文件。出现问题真正原因是我们在引用so库时(引用的三方库中引用了so库),对arm64做了兼容。这样就会导致运行时系统误以为我们的应用对所有的so库做了arm64架构的兼容,但是在打包时libflutter并没有引入arm64的版本。这就导致系统去寻找arm64版本的libflutter发现找不到。系统误会了我们,我门只能通过gradle在打包时排除其他非arm32架构的so文件来解除这个误会。

    好那如何排除其他非arm32架构的so文件。在app下的gradle文件加入如下代码

     buildTypes {release {ndk{//这里其实我觉可以直接是用"armeabi-v7a",但国内几个大哥之前使用的都是"armeabi"abiFilters "armeabi"}}debug {ndk {//这里要加上,否则debug包会出问题,后面三个为可选,x86建议加上不然部分模拟器回报错abiFilters "armeabi", ,"armeabi-v7a","arm64-v8a", "x86"}}}
    复制代码

最后

这个问题在官方issues已经存在很久了暂时没有完美的解决方法,有新的方法我会第一时间更新。 后续我会持续更新一些Flutter开发时遇到的问题,以及一些好的文章(可能包含生肉,本人英文能力有限尽量尝试炒熟)。希望能帮大家少走一些弯路。有些理解不到位也希望大家指正帮助进步,提前谢过大家。谢谢。

转载于:https://juejin.im/post/5c3444116fb9a049e6606bc4

Flutter杂症(couldn't find libflutter.so)相关推荐

  1. Flutter Engine C++ 源码调试初探

    原文:https://fucknmb.com/2019/12/06/Flutter-Engine-C-%E6%BA%90%E7%A0%81%E8%B0%83%E8%AF%95%E5%88%9D%E6% ...

  2. Flutter couldn‘t find “libflutter.so“

    今天项目中遇到了一个问题,小伙伴在打包的时候发现报错 couldn't find "libflutter.so" .在詹姆斯.刘的帮助下,把这个地方调试通了.那么我们今天就来讲一讲 ...

  3. Flutter 插件 找不到xxxx.so 找不到libflutter.so so库不全导致无法启动app

    flutter v1.12.7基础功能差不多完善了,但是当你需要需要调用原生so库时 你就会发现非常蛋疼的事情,特别是自己公司的sdk 这时候你只能写插件 如果公司提供的so库很全,那么编写插件的过程 ...

  4. flutter ios启动白屏_Flutter技术架构概览

    前言 最近在整理各种技术架构,给自己的列了个TODO list,希望能在几个月的时间内,研究完各种前端技术架构,包括移动端技术架构.今天分享一下自己整理的flutter技术架构.完整的技术架构TODO ...

  5. 技术实践 | Android Flutter 多实例实践

    导读:Flutter CLI 工具支持将 Flutter Module 打包成 Android AAR 包以供外部依赖使用,即 Flutter AAR.在一个没有使用 Flutter 技术栈的 And ...

  6. 技术干货 | Flutter 混合开发基础

    导读:Flutter 支持以独立页面.甚至是 UI 片段的方式,集成到现有的应用中,即所谓的混合开发模式.本文主要谈谈 Android 平台下, Flutter 的混合开发与构建. 文|李成达 网易云 ...

  7. android调用flutter aar_Flutter原生混合开发

    混合开发简介 使用Flutter从零开始开发App是一件轻松惬意的事情,但对于一些成熟的产品来说,完全摒弃原有App的历史沉淀,全面转向Flutter是不现实的.因此使用Flutter去统一Andro ...

  8. 深入理解 Flutter 的编译原理与优化

    阿里妹导读:对于开发者而言,Flutter工程和我们的Android/iOS工程有何差别?Flutter的渲染和事件传递机制如何工作?构建缓慢或出错又如何去定位,修改和生效呢?凡此种种,都需要对Flu ...

  9. flutter打包的app有多大_Flutter原生混合开发

    使用 Flutter 从头开始写一个 App是一件轻松惬意的事情.但是对于成熟产品来说,完全摒弃原有 App 的历史沉淀,全面转向 Flutter 并不现实.用 Flutter 去统一 iOS/And ...

最新文章

  1. 微信小程序数据拼接_微信小程序用户数据解密算法Java版
  2. MyClass a,b[2],*p[2]调用了几次构造函数
  3. java 将一个非空文件夹拷贝到另一个地方
  4. 可用于Asp.net的嵌入式数据库SqlCE4.0试用笔记
  5. 2021年2月十大热门报告盘点(附百大热门报告列表及下载链接)
  6. 【转】Objective-C 属性特性(assign , retain , copy , readonly , readwrite , atomic , nonatomic)...
  7. ITIL 4 知识系列之服务目录
  8. matlab晶格图,科学网-MATLAB软件绘制一维双原子晶格的格波色散曲线-李金磊的博文...
  9. 【Android Jetpack】彻底弄清Navigation的BackStack如何变化
  10. 【opencv-python】 HSV抠图-智能车拟合道路边界和中线
  11. 2020-11-12杂谈
  12. 章节十六:编码和文件读写
  13. 浅析大数据前景及就业方向
  14. python基础语法(一)range函数
  15. SCU - 4437 Carries
  16. 边界外推和边界处理--cv::copyMakeBorder()和cv::borderInterpolate()
  17. 周易测算网站H5源码在线起名运势测算网站系统源码
  18. 高斯模糊原理和python实现
  19. k30最小宽度380不管用了_K30系列最强机,Redmi K30S至尊纪念版评测
  20. Error running app: Default ActivityNot Found 完美的解决方案

热门文章

  1. excel 第一讲:认识excel
  2. 41-C++自动存储、静态存储和动态存储
  3. 【BJOI2019】勘破神机【数论】
  4. 第一次谈兼职写书的经过
  5. 46、微信-群聊列表
  6. 关于IntelliJ IDEA
  7. 网络空间安全大赛简介
  8. 最新微信公众号文章数据导出软件工具
  9. mysql产品分类_MySQL习题1 一对多实例 产品和分类
  10. SIM7600连接阿里云