java.lang.NoSuchMethodError的不明崩溃问题

news/2024/10/4 13:32:37

1)java.lang.NoSuchMethodError的不明崩溃问题
2)微信小游戏有可行的分析Mono内存的方法吗
3)游戏运行中,从对象池里拿Item时动态设置物体锚点,导致DC成倍增加
4)Scriptable Build Pipeline打包Scritptable Object报错


这是第384篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com
UWA QQ群:793972859

Crash

Q:最近被Android的一个崩溃搞得毫无头绪。烦请各位大佬帮忙指导分析一下。

这里是从Bugly截取的最后一段崩溃日志,Unity线程运行良好。然后一个不知名线程突然就报了一个java.lang.NoSuchMethodError的崩溃,更奇怪的找不到函数名name='Thread-37' ,来源文件也是Unknown Source。

19404-18 15:18:27.898 21248 21470 I Unity : CreateScene sceneInst complete 2
19504-18 15:18:27.911 21248 21470 I Unity : Lod level: 1
19604-18 15:18:28.264 21248 22705 W Unity : ! parseType; T is not known!
197--------- beginning of crash
19804-18 15:18:28.282 21248 22705 E AndroidRuntime: FATAL EXCEPTION: Thread-37
19904-18 15:18:28.282 21248 22705 E AndroidRuntime: Process: com.readygo.barrel.gp, PID: 21248
20004-18 15:18:28.282 21248 22705 E AndroidRuntime: java.lang.NoSuchMethodError: no non-static method with name='Thread-37' signature='Thread-37' in class Ljava.lang.Object;
20104-18 15:18:28.282 21248 22705 E AndroidRuntime: at com.unity3d.player.ReflectionHelper.getMethodID(Unknown Source:162)

这个大概会是什么问题呢?全网搜遍没有类似的问题。

同时,此问题在GooglePlay后台报的崩溃错误如下:

 

初始是怀疑第三方库导致,但是和公司同项目组比较过。使用同样的第三方库的项目并没有出现类似崩溃。

所以请问有没有类似的问题经验或者思路启发?非常感谢。

A1:目前使用了一些简单的方法,此问题算是绕过了。应该是给Java层传递某个动作的时候,sig里传入了一个‘T',底层并没有处理这个T导致,但是不知道为什么会传入,确定没有调用任何Java的函数,没有任何的JNI调用。此问题暂时总结到这里吧,以后有高手遇到此问题,可以深挖。

程序报错出自:ReflectionHelper.java中:

if (Log.LOG_WARN) Log.Log(Log.WARN, "! parseType; " + c + " is not known!");

  

伪代码如下:

private static Class<?> parseType(String sig, int[] sigPos){if (Log.LOG_VERBOSE && LOGV) Log.Log(Log.VERBOSE, "- parse '" + sig + "' at " + sigPos[0]);while(sigPos[0] < sig.length()){char c = sig.charAt(sigPos[0]++);if (c == '(')continue;else if (c == ')')continue;if (c == 'L'){int end = sig.indexOf(';', sigPos[0]);if (end == -1)break;String typeName = sig.substring(sigPos[0], end);sigPos[0] = end+1;typeName = typeName.replace('/', '.');if (Log.LOG_VERBOSE && LOGV) Log.Log(Log.VERBOSE, "- typename = " + typeName);Class<?> t;try {t = Class.forName(typeName);} catch (ClassNotFoundException e) {if (Log.LOG_VERBOSE && LOGV) Log.Log(Log.VERBOSE, e.toString());break;}return t;}if (c == 'Z') return boolean.class;if (c == 'I') return int.class;if (c == 'F') return float.class;if (c == 'V') return void.class;if (c == 'B') return byte.class;if (c == 'C') return char.class;if (c == 'S') return short.class;if (c == 'J') return long.class;if (c == 'D') return double.class;if(c == '['){Class<?> type = parseType(sig, sigPos);return Array.newInstance(type, 0).getClass();}if (Log.LOG_WARN) Log.Log(Log.WARN, "! parseType; " + c + " is not known!");break;}return null;

  

感谢题主beginner@UWA问答社区提供了回答

A2:可以看下这个链接:
https://rollbar.com/blog/how-to-fix-java-lang-nosuchmethoderror-in-java/

感谢Xh6LLqqaaoVb@UWA问答社区提供了回答

A3:针对A2提供的解答,虽然提示java.lang.NoSuchMethodError,但实际上并不是NoSuchMethodError,感觉是开启线程的时候崩溃了。此问题真的很诡异,目前基本确定了问题是和线程有关系的。

感谢题主beginner@UWA问答社区提供了回答


WebGL

Q:微信小游戏有什么可行的分析Mono内存的方法吗?Memory Profiler一抓帧就卡死。

欢迎有经验的朋友转至社区交流:
https://answer.uwa4d.com/question/6627973d5c7f5d2c5805d3b6


UI

Q:游戏运行中,从对象池里拿Item时候动态设置物体锚点,导致DC成倍增加,为什么动态设置锚点会影响DC呢?

A:通过UGUI查是否合批通过Profiler的UI Module最方便。

感谢Wenbo@UWA问答社区提供了回答


AssetBundle

Q:1. 发生了什么?

给定一个自定义可编写脚本的对象,它有一个类似于MyScriptableObject m_RefObject的字段,创建3个名为A、B、C的对象。

C引用B、B引用A,使用SBP CompatibilityBuildPipeline.BuildAssetBundles将3个资产构建为单独的捆绑包。

加载捆绑包A、B、C,加载资产A、B、C。A和B加载成功,而加载C失败,导致警告“The referenced script on this Behaviour (Game Object '') is missing!'' 并返回 null。

切换到UnityEditor.BuildPipeline.BuildAssetBundles,A、B、C 均加载成功。

2. 如何使用所附示例重现它?

打开示例场景并单击“播放”,控制台将显示资源加载失败,所有行为均在Entry.cs内。

使用版本:
com.unity.scriptablebuildpipeline: 1.20.2/ 1.21.9
Unity 2021.3.25f1

有没有人遇到过这个问题,怎么解决?

欢迎有经验的朋友转至社区交流:
https://answer.uwa4d.com/question/661364835c7f5d2c5805d394

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/28943.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Cannot resolve method and(java.util.function.Predicatejava.lang.String)

springboot整合knife4j报错,提示找不到该方法,用的knife4j依赖是最新版本解决方法:将knife4j版本进行降级处理,这里采用2.0.4

单体到微服务架构的涅槃重生之路?

在技术演进的历史长河中,单体架构曾是众多项目的起点,但随着业务需求日益复杂,微服务架构凭借其灵活性和可扩展性逐渐成为新宠。行业内对此有着激烈的讨论,尤其是互联网大厂和行业技术大佬们对微服务架构的看法颇具影响力。在技术演进的历史长河中,单体架构曾是众多项目的…

Django Admin后台管理:高效开发与实践

title: Django Admin后台管理:高效开发与实践 date: 2024/5/8 14:24:15 updated: 2024/5/8 14:24:15 categories:后端开发tags:DjangoAdmin 模型管理 用户认证 数据优化 自定义扩展 实战案例 性能安全第1章:Django Admin基础 1.1 Django Admin简介 Django Admin是Django框架自…

redis自学(42)Lua语法

接下来要实现Nginx的本地缓存,而Nginx是用Lua语言来开发,下面简单理解一下Lua初始Lua Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 安装,centOS自带Lua语言了,不需要安装…

Stable-Diffusion ControlNet插件 DWPose模型下载及使用

webui Version: v1.9.3 DWPose项目地址: https://huggingface.co/yzd-v/DWPose 国内镜像: https://gitee.com/hf-models/DWPose 先安装 git-lfs,下载git仓库大文件会用到 文档: https://help.gitee.com/enterprise/code-manage/code-hosting/large-file-manage/git-lfs 然后确保…

ISCC线上赛2023

ISCC线上赛2023 web web1双重base解码得到flag web3 F12控制台查看可找到loveStory.php Enc.php download.php,loveStory.php为反序列源码 boy::__destruct() -->girl()::__call()-->helper()::__isset()-->boy()::__toString()-->helper()::__get()-->love_st…

python教程6.4-excel处理模块

第三方开源模块安装 创建文件打开已有文件写数据选择表保存表遍历表 按行遍历按列遍历遍历指定行列遍历指定第几列数据删除表设置单元格样式字体对齐设置行高列宽

24/05/08 图论

能做的仍然只有 stO Liuhl_weifang Orz。\(\color{purple}(1)\) CF746G New Roads构造一棵 \(n\) 个点的深度为 \(t\) 的树,以 \(1\) 为根,使其中深度为 \(i\) 的点有 \(a_i\) 个且叶节点有 \(k\) 个。或报告无解。 \(t, k \le n \le 2 \times 10^5\)。为了方便,我们令根节点…