Flutter 1.0.0 打包apk后运行错误

在升级 Flutter 至 1.0.0 版本后,遇到运行 APK 报错 `dalvik.system.PathClassLoader` 无法找到 `libflutter.so`。问题源于缺少 64 位的 SO 文件。解决方案是在项目 Android 目录下修改配置,确保只打包 v7a 的 SO 库,并包含 `libflutter.so`。当前市场上的 Android 设备多数为 v8 CPU,使用 v7a 已足够。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file “/system/framework/android.test.runner.jar”, … base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]] couldn’t find “libflutter.so

这种问题可以看到其中有 arm64 的字样. 也有 libflutter.so

在以前运行打包命令后 可以正常运行的项目,可能在更新 flutter 1.0.0 后不能正常运行

flutter build apk

这种情况通常是因为 so 文件没有打包到 apk 中造成的
拖动 apk 到 android Studio 中可以看到其中包含的库文件

我前面有一篇so 对齐的文章可以解释原理

但是 flutter 升级后 可以查看flutter.gradle文件

图片
图片中的代码说明了当目标是 arm64 的时候, 会自动将 64 的 so 打包到 flutter 内, 这里的问题就造成了以前你在自己的 gradle 设置的打包选项和这个同时生效,也就是

### 解决Flutter应用打包APK后安装出现白屏的问题 #### 了解问题根源 当遇到Flutter应用程序在Android设备上启动时显示白色屏幕的情况,通常是因为某些资源未能正确加载或初始化过程中的错误所引起。这可能涉及到了不兼容的.so文件配置[^1]。 #### 配置SplashScreen插件 为了改善用户体验并排查是否因主界面加载过慢而导致的短暂空白现象,可以考虑集成`splashscreen`库来设置启动画面。按照指导,在项目的`pubspec.yaml`中加入相应依赖项: ```yaml dependencies: flutter: sdk: flutter splashscreen: ^1.3.5 ``` 接着依据官方文档完成剩余步骤以实现自定义开屏页效果[^2]。 #### 检查清单文件格式 确保`AndroidManifest.xml`内的语法结构无误对于防止类似`INSTALL_PARSE_FAILED_MANIFEST_MALFORMED`这样的异常至关重要。任何标签拼写失误或是属性值不当都可能导致解析失败进而影响正常渲染流程[^3]。 #### 调整构建脚本逻辑 通过修改Gradle构建脚本来动态生成带有时间戳标记的应用程序名称有助于区分不同版本间的差异以便于调试分析。具体做法是在`build.gradle`内添加获取当前日期的方法以及调整输出路径规则如下所示[^4]: ```groovy // 获取日期时间 static def getDateTime() { def date = new Date() // 不能用冒号 def formattedDate = date.format('yyyy_MM_dd_HH_mm_ss') return formattedDate } android { ... applicationVariants.all { variant -> variant.outputs.all { output -> if (outputFileName != null && outputFile.name.contains("release")) { outputFileName = "MyApp-V${variant.versionName}-${variant.versionCode}-${getDateTime()}.apk" } } } } ``` 以上措施能够帮助定位并修复由多种因素引发的白屏状况,从而保障最终发布的APK稳定可靠地运行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值