Flutter 3.24 华为手机Fatal signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0x7700000002 in tid 134

升级flutter sdk版本至最新的3.26版本,然后在华为的mate 60和mate 5闪退,报错日志如下:

F/libc    (27724): Fatal signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0x7700000002 in tid 13407 (example.test001), pid 27724 (example.test001)
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'HUAWEI/BRA-AL00/HWBRA:12/HUAWEIBRA-AL00/104.2.0.138C00:user/release-keys'
Revision: '0'
ABI: 'arm64'
Timestamp: 2024-10-21 22:31:04.783168320+0800
Process uptime: 0s
Cmdline: com.example.test001
pid: 27724, tid: 13407, name: example.test001  >>> com.example.test001 <<<
uid: 10520
signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0x7700000002
    x0  00000077b723e000  x1  000000786f0ad960  x2  0000007700000002  x3  0000000000000003
    x4  0000000000000000  x5  000000772f8ffd00  x6  0000007714d6d6b0  x7  000000771acc9da0
    x8  000000786a1311c0  x9  0000000000000003  x10 0000000000000000  x11 0000000000000000
    x12 0000000000000040  x13 000000000000000a  x14 000000000000000a  x15 000000788057deb8
    x16 00000077a431b740  x17 0000007880552284  x18 0000007722124000  x19 000000772f90f660
    x20 000000772f90f580  x21 000000772f90f688  x22 000000772f90f6b8  x23 00000077320cf15b
    x24 00000077150a2150  x25 00000077226fba28  x26 0000000000000000  x27 000000773f3ce380
    x28 00000000aaaaaaab  x29 00000077226fb960
    lr  0000007732207c60  sp  00000077226fb960  pc  0000007700000002  pst 0000000020001400
backtrace:
      #00 pc 0000007700000002  <unknown>
      #01 pc 0000000000165c5c  /vendor/lib64/hw/vulkan.hvgr_v200.so (BuildId: 44d3bc026e1dcb7c91763d53eabba274)
      #02 pc 00000000002f9e68  /vendor/lib64/hw/vulkan.hvgr_v200.so (BuildId: 44d3bc026e1dcb7c91763d53eabba274)
      #03 pc 00000000002fb4f0  /vendor/lib64/hw/vulkan.hvgr_v200.so (BuildId: 44d3bc026e1dcb7c91763d53eabba274)
      #04 pc 0000000000234210  /vendor/lib64/hw/vulkan.hvgr_v200.so (BuildId: 44d3bc026e1dcb7c91763d53eabba274)
      #05 pc 00000000000fc370  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+176) (BuildId: 82f181b5d9da8999785cca84af3dad4b)
      #06 pc 000000000009a4fc  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+40) (BuildId: 82f181b5d9da8999785cca84af3dad4b)

解决办法

在android的manifest里面 application标签下,添加如下代码:

        <meta-data
            android:name="io.flutter.embedding.android.EnableImpeller"
            android:value="false" />

APP闪退问题解决

### 华为 Flutter 仓库关闭的原因 华为Flutter 相关仓库可能因多种因素而被关闭。一种可能性是由于战略调整,华为可能决定将资源集中于其他技术方向,例如鸿蒙生态系统的开发工具 ArkTS 或者原生 HarmonyOS 的支持[^1]。此外,也可能出于合规性和知识产权保护方面的考虑,尤其是在涉及国际开源社区合作的情况下。 另一种原因是维护成本较高。如果某个项目不再满足市场需求或无法获得足够的开发者支持,则可能会停止公开维护并最终关闭其官方存储库[^2]。 ### 替代方案分析 对于希望继续使用类似功能的应用程序开发者来说,有几个可行的方向作为替代: #### 一、采用鸿蒙生态系统中的新技术 - **ArkTS** 是华为推出的一种新型脚本语言,专为构建跨设备应用设计,在性能表现上优于传统 JavaScript 解决方案,并且能够很好地兼容现有 Android/iOS 平台上的业务逻辑迁移需求。 ```typescript // 示例代码展示如何用 ArkTS 创建 WebView 组件 import web from &#39;@ohos.web&#39;; @Entry @Component struct MyWebComponent { @State url: string = &#39;https://www.example.com&#39; build() { Column() { Web({ src: this.url }) .width(&#39;100%&#39;) .height(&#39;100%&#39;) } } } ``` #### 二、利用第三方框架实现相同目标 除了直接依赖厂商提供的 SDK 外,还可以借助成熟的跨端 UI 库来完成相应工作。比如 React Native 支持通过自定义模块接入特定操作系统特性;或者选用 Ionic Framework 结合 Capacitor 插件体系架构达到近似效果。 然而需要注意的是,这种方法通常伴随着额外的学习曲线以及潜在的技术债务风险——因为这些外部依赖项未必总能及时适配最新版本的基础环境变化。 #### 三、自行封装本地组件 针对某些特殊场景下的强定制化诉求,也可以考虑基于 NDK 层面编写专属解决方案。尽管这无疑增加了初始投入力度,但从长远角度看或许更具灵活性与可控度。 ```cpp // C++ 实现简单的 WebView 加载网页示例 #include <android_webview/android_webview.h> void loadUrl(AwContents* aw_contents, const char* url) { AwLoadUrlParams params; memset(&params, 0, sizeof(params)); params.url = url; aw_contents->LoadURL(params); } ``
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄油奥特曼

如果可以,请我喝一杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值