我已按照文档https://v8.dev/docs/cross-compile-arm
为Android构建了v8我特别需要v8_monolith.a档案库以在正在进行的android项目中使用。 另外,我需要使用NDK 21版来构建它,这不是我们在v8的// third_party / android_ndk目录中获得的版本。因此,我下载了NDKr21,并将NDK文件夹复制到// third_party / android_ndk文件夹,并删除了那里的r20版本,以便V8在构建时使用NDKr21。
为arm64-v8a构建并将v8_monolith.a库复制到android项目后,它运行良好。但是,在为手臂构建它并再次复制该库,运行该应用程序之后,该应用程序崩溃了。所以我在调试模式下为手臂构建了v8。 对于 arm abi ,使用了以下参数:
target_os =“ android”
is_debug = true
is_component_build = false
target_cpu =“手臂”
v8_target_cpu =“手臂”
v8_enable_pointer_compression =假
clang_use_chrome_plugins =假
v8_monolithic = true
v8_use_external_startup_data = false
symbol_level = 2
v8_enable_i18n_support = false
然后使用命令 ninja -C out.gn/arm.release v8_monolith -vv
进行构建事实证明,它对于arm64-v8a和x86_64(基本上是64位)运行正常,而对于x86和arm(32位)则崩溃。
在支持armeabi-v7a的设备上运行后,logcat输出为:v8_crash
我有linux-x86_64机器。
在32位android设备上构建和运行v8是否需要任何参数?我在这里做什么错了?