使用RootAutomator 导致 hamibot 直接crash 了,已经给 hamibot root 权限了
使用shell root 是没问题的,说明问题不在 root 权限上。只要new RootAutomator 就 crash,从 adblog 看报了so 的错误。07-23 18:16:00.702 615 615 D AndroidRuntime: Shutting down VM
07-23 18:16:00.703 615 615 E AndroidRuntime: FATAL EXCEPTION: main
07-23 18:16:00.703 615 615 E AndroidRuntime: Process: com.hamibot.hamibot, PID: 615
07-23 18:16:00.703 615 615 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/~~Kks1zE3Hxk0pBQeFe_zgIg==/com.hamibot.hamibot-k_l-rmdCVC85xUuMib8YYA==/lib/arm64/libjackpal-termexec2.so" is 32-bit instead of 64-bit
回答
根据你的描述,可能是以下原因导致的崩溃,请按步骤排查:
-
RootAutomator 初始化问题
确保脚本中仅存在一个 RootAutomator 实例,并在退出时显式调用exit()
方法。示例代码:var ra = new RootAutomator(); events.on('exit', function() { ra.exit(); }); // 执行操作 ra.tap(100, 100);
-
Root 权限验证
虽然已授权 root,但部分设备需通过shell('su', true)
验证是否成功获取权限。若返回Permission denied
,需重新授予权限或检查设备兼容性。 -
坐标越界问题
确认tap()
的坐标参数在屏幕有效范围内(如0 < x < width
,0 < y < height
),越界操作可能导致脚本异常。 -
系统省电策略干扰
进入设备设置 > 电池 > 电源优化,将 Hamibot 设为 不优化,避免后台进程被系统杀死。 -
多点触摸冲突
若使用多点触摸(如ra.tap(x, y, id)
),确保id
值唯一且不超过设备支持的触点数(通常 ≤ 5)。
若问题仍存在,可尝试在脚本开头添加日志输出,定位崩溃位置:
log("RootAutomator 初始化...");
var ra = new RootAutomator();
log("执行点击操作...");
ra.tap(100, 100);
补充回答 1
根据您提供的错误日志,问题出现在加载 native 库 libjackpal-termexec2.so
时,系统提示该库是 32 位的,而当前环境要求 64 位。这通常与以下原因有关:
-
设备系统架构不兼容
若设备运行的是 Android 64 位系统(如 ARM64/x86_64),但应用包含的 native 库仅提供 32 位版本,会导致dlopen
失败。Hamibot 的 RootAutomator 可能依赖了此库,而您的设备或系统镜像不支持 32 位兼容模式。 -
Hamibot 版本问题
当前使用的 Hamibot 版本可能未完全适配 64 位架构,或依赖的第三方库(如 termexec2)存在架构兼容性问题。 -
Root 权限环境差异
虽然您确认 root 权限正常,但某些 root 环境(如 Magisk)可能对 native 库的加载策略有特殊限制,导致动态链接失败。
建议解决方案
-
检查设备架构支持
确认设备是否为 64 位系统(可通过getprop ro.product.cpu.abi
查看)。若设备支持 64 位,尝试更新 Hamibot 到最新版本(可能已修复兼容性问题)。 -
联系 Hamibot 官方支持
该错误属于底层库加载问题,可能需要开发者检查依赖库的构建配置(确保提供 64 位版本)。您可将完整错误日志发送至 support@hamibot.cn 申请协助。 -
临时规避方案
若需紧急使用,可尝试在设备开发者选项中开启 “应用兼容性” 设置中的 “允许 32 位应用”(部分设备支持),但此操作可能影响系统稳定性。
若问题持续,建议提供以下信息给 Hamibot 支持团队:
- 设备型号及系统版本
- Hamibot 版本号
- 完整的 ADB 日志(含
libjackpal-termexec2.so
加载过程)