Chromium Android正式构建搜索崩溃:缺失libcrashpad_handler_trampoline.so
构建Android Chromium正式版时缺失libcrashpad_handler_trampoline.so导致崩溃的解决方案
问题背景
构建Android版Chromium,遵循官方指南生成APK,所用GN参数如下。随后通过Android Studio专属指南生成包装器项目,提取Java、XML、SO等资源后直接构建,App可正常启动,但执行任何URL搜索(包括chrome://version这类内置URL)时崩溃,核心报错为找不到libcrashpad_handler_trampoline.so。debug构建目录中存在该文件,但正式构建(is_debug = false)时缺失。
所用GN参数
target_os = "android" target_cpu = "arm64" android_channel = "stable" is_debug = false is_official_build = true is_component_build = false is_clang = true symbol_level = 0 blink_symbol_level=0 use_unofficial_version_number = false v8_use_external_startup_data = true icu_use_data_file = false ffmpeg_branding = "Chrome" proprietary_codecs = true exclude_unwind_tables = true chrome_pgo_phase = 0
崩溃报错信息
error: unable to open file "/data/app/~~VZ6JSoritWLt73RxWsu5yg==/org.chromium.chrome-fCO_LyriifFjdrNCMbQC_A==/base.apk!/lib/arm64-v8a/libcrashpad_handler_trampoline.so"
崩溃堆栈信息
DEBUG pid-24896 A Build fingerprint: 'samsung/r8qxxx/r8q:13/TP1A.220624.014/G781BXXS9HXA4:user/release-keys' DEBUG pid-24896 A Revision: '6' DEBUG pid-24896 A ABI: 'arm64' DEBUG pid-24896 A Processor: '7' DEBUG pid-24896 A Timestamp: 2024-03-07 16:39:23.593326054+0530 DEBUG pid-24896 A Process uptime: 21s DEBUG pid-24896 A Cmdline: org.chromium.chrome DEBUG pid-24896 A pid: 24573, tid: 24573, name: chromium.chrome >>> org.chromium.chrome <<< DEBUG pid-24896 A uid: 10959 DEBUG pid-24896 A signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x0000007d505f181c DEBUG pid-24896 A x0 0000000000000001 x1 b400007ddf922460 x2 0000000000000001 x3 0000000000000063 DEBUG pid-24896 A x4 0000000000000021 x5 0000000000000000 x6 0000007e89ebf000 x7 0000000000ab3cd4 DEBUG pid-24896 A x8 99f03dcd87b4b313 x9 99f03dcd87b4b313 x10 000000000000007b x11 0101010101010101 DEBUG pid-24896 A x12 0000007ff06eb320 x13 0000000000000071 x14 0000000000000000 x15 00005330cb2a225e DEBUG pid-24896 A x16 0000000000000001 x17 0000007e77d9f818 x18 0000007e88fda000 x19 0000000000000002 DEBUG pid-24896 A x20 000000000000001f x21 0000007d4c9643d5 x22 0000007d4c7d17e4 x23 0000000000000000 DEBUG pid-24896 A x24 0000007ff06ecba8 x25 0000000000000200 x26 0000007e88ce2000 x27 0000007d54fc9000 DEBUG pid-24896 A x28 0000000000000013 x29 0000007ff06ecdb0 DEBUG pid-24896 A lr 0000007d505f17d4 sp 0000007ff06ecac0 pc 0000007d505f181c pst 0000000060001000 DEBUG pid-24896 A backtrace: DEBUG pid-24896 A #00 pc 00000000047df81c /data/app/~~Xdn1Bp8tkaJR4jaYjy7I0Q==/org.chromium.chrome-b6yTYWCy9lrtxZHzmCnVIQ==/base.apk!libchrome.so (BuildId: 598f31426c476ca7bc56f006306bc87705028c2b)
解决方案
- 显式启用Crashpad:在GN参数中添加
use_crashpad = true和enable_crash_reporter = true。正式构建中Crashpad默认启用,但自定义参数组合可能导致构建系统排除依赖库,显式声明可确保libcrashpad_handler_trampoline.so被编译并打包。 - 检查Android Studio打包配置:确认包装器项目的
build.gradle中,sourceSets.main.jniLibs.srcDirs指向Chromium构建目录下的out/[build-name]/lib/arm64-v8a,确保所有SO文件被完整引入,避免手动提取时遗漏。 - 验证构建产物完整性:用
unzip命令解压Chromium官方生成的APK,检查lib/arm64-v8a/目录下是否存在目标SO文件,确认后再同步到Android Studio项目,避免资源丢失。 - 调整符号表级别:当前
symbol_level = 0会完全移除符号表,可能触发构建系统的激进优化导致库被误删。可尝试将symbol_level改为1(保留最小符号表)验证问题是否解决;若必须保持symbol_level=0,需显式将crashpad_handler_trampoline加入强制链接列表。
内容的提问来源于stack exchange,提问作者nil
相关产品推荐
相关产品推荐

