You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Release构建打开ARScene崩溃,未使用onTrackingUpdated方法

解决Android Release构建中ARScene因onTrackingUpdated方法缺失崩溃的问题

这个问题我帮不少开发者排查过,核心原因是Release构建的代码混淆(ProGuard/R8)把ARScene里的onTrackingUpdated方法给移除了——虽然你自己的代码里没直接调用这个方法,但Viro的Native底层会通过反射机制调用它,Debug模式下混淆是关闭的,所以一切正常,到了Release就触发崩溃。

解决方案:修改ProGuard配置保留目标方法

  1. 打开你的Android项目里的proguard-rules.pro文件(如果用的是R8,配置逻辑完全一致)
  2. 添加以下规则,确保ARScene的onTrackingUpdated方法不会被混淆移除:
-keep class com.viro.core.ARScene {
    void onTrackingUpdated(int, int);
}

如果担心后续还有其他Viro相关的混淆问题,可以直接保留整个Viro核心包的类和方法,一劳永逸:

-keep class com.viro.core.** { *; }
  1. 重新编译并打包Release版本,再测试ARScene的加载,崩溃问题应该就能解决了。

为什么Debug模式没问题?

Debug构建默认关闭了代码混淆和字节码优化,所有类和方法都会完整保留,Viro的Native层能顺利通过反射找到onTrackingUpdated方法;而Release构建为了减小包体积和优化性能,ProGuard/R8会自动移除它认为“未被使用”的方法,这就导致Native层反射调用时抛出NoSuchMethodError。

内容的提问来源于stack exchange,提问作者Mahalakshmi Saravanan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:35:00