Flutter Android发布版split_config.arm64_v8a.apk SIGSEGV崩溃求助
Flutter Android发布版ARM64架构SIGSEGV崩溃排查方案
问题概述
- 仅Android发布版出现崩溃,开发构建版本无此问题
- 仅影响少量用户
- 未集成Crashlytics,现有崩溃信息如下:
Play商店错误标题
[split_config.arm64_v8a.apk] SIGSEGV
崩溃回溯信息
backtrace: #00 pc 0x0000000000085094 /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy+292) #01 pc 0x000000000061c278 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #02 pc 0x00000000001d20a8 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #03 pc 0x00000000001d369c /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #04 pc 0x00000000001e1c00 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #05 pc 0x0000000000601fb0 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #06 pc 0x00000000001da6a4 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #07 pc 0x00000000001dde94 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #08 pc 0x000000000185105c /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #09 pc 0x000000000184f37c /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #10 pc 0x000000000184d6dc /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #11 pc 0x000000000191c240 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #12 pc 0x0000000000952c9c /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #13 pc 0x0000000000952bc0 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #14 pc 0x00000000002af964 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #15 pc 0x00000000002bd828 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #16 pc 0x00000000001deaa8 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #17 pc 0x000000000056984c /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #18 pc 0x00000000005699c4 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #19 pc 0x0000000000206b70 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #20 pc 0x0000000000207d30 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #21 pc 0x0000000000207d70 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #22 pc 0x0000000000207fb4 /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #23 pc 0x00000000003399fc /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #24 pc 0x0000000000351a6c /data/app/~~rl7ZWwW2NDGA5rRb9K9nEA==/{PACKAGE_IDENTIFIER}-OBaHBkLOrFpnjTcok9CC8w==/split_config.arm64_v8a.apk #25 pc 0x000000000043dd54 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148) #26 pc 0x000000000020a2b0 /apex/com.android.art/lib64/libart.so (nterp_helper+4016) #27 pc 0x0000000002041094 /memfd:jit-cache
崩溃原因分析
- SIGSEGV与内存复制错误:崩溃触发点在
__memcpy函数,说明是内存访问越界,大概率是Native层(Flutter引擎或第三方Native插件)在执行内存复制操作时,访问了非法的内存区域。 - 发布版/ARM64特定问题:开发构建无此问题,说明是发布版编译优化(AOT编译、混淆、资源裁剪)导致的内存布局异常;仅ARM64架构触发,指向架构特定的编译逻辑或代码兼容问题。
- 少量用户影响:可能与特定Android版本、设备硬件特性,或者用户特定操作场景(如大资源加载、高并发操作)相关。
排查与解决步骤
1. 符号化崩溃回溯
当前回溯仅显示内存地址,无法定位具体函数,需用工具解析:
- 找到发布版构建生成的
app-arm64-v8a-release.unstripped.so文件,路径通常为build/app/intermediates/merged_native_libs/release/out/lib/arm64-v8a/ - 使用Android NDK的
addr2line工具解析地址,命令示例:
将回溯中所有addr2line -f -C -e app-arm64-v8a-release.unstripped.so 0x0061c278split_config.arm64_v8a.apk对应的内存地址逐个解析,得到具体函数名和代码位置。
2. 验证编译优化影响
临时关闭部分发布版优化,逐步排查:
- 在
android/app/build.gradle中禁用混淆:minifyEnabled false - 禁用资源裁剪:
shrinkResources false - 编译发布版时添加参数关闭部分Flutter优化:
flutter build apk --release --no-tree-shake-icons --no-shrink - 若崩溃消失,逐步恢复优化项,定位具体引发问题的优化逻辑。
3. 排查第三方Native插件
- 检查项目中使用的第三方插件,尤其是涉及ARM64架构的Native插件,查看是否存在已知的内存泄漏或越界问题。
- 暂时移除可疑插件,重新构建发布版测试,确认是否由插件导致崩溃。
4. 复现与调试
- 在ARM64架构的真机上运行发布版,模拟用户操作场景,尝试复现崩溃。
- 临时集成Crashlytics,获取更详细的崩溃上下文(设备信息、操作步骤、线程状态)。
5. 内存相关代码检查
- 检查Flutter代码中涉及Native交互的部分(如
MethodChannel、PlatformView),确保参数传递、内存管理逻辑正确。 - 排查是否存在大内存操作(如位图加载、文件读写),确认是否存在内存泄漏或溢出情况。
内容的提问来源于stack exchange,提问作者Abdelrahman
相关产品推荐
相关产品推荐

