tinker icon indicating copy to clipboard operation
tinker copied to clipboard

在OPPO的机器上,子进程会出现NoSuchMethodError

Open xiangtailiang opened this issue 7 months ago • 3 comments

问题描述

在OPPO的机器上出现崩溃,而且只在子进程中出现,主要集中在Android 13、14、15的机器上。

java.lang.NoSuchMethodError: No static method b()Ljava/lang/String; in class La4/b; or its super classes (declaration of 'a4.b' appears in base.apk)
	at com.example.business.stat.UtStatAgent$UtStatAgentImpl.getUtPublicArgs(UtStatAgent.java:460)
	at com.example.business.stat.UtStatAgent$UtStatAgentImpl.utStatCustom(UtStatAgent.java:401)
	at com.example.business.stat.UtStatAgent.lambda$utStatCustom$11(UtStatAgent.java:153)

崩溃中提到的 b()Ljava/lang/String 是部署包中的方法:

Image

这个方法在未部署的base apk中是另外一个名称:

Image

看加载dex的情况是UtStatAgent使用了动态部署后的新dex,但依赖的a4.b这类又从base apk中寻找。

这里顺便解释一下为什么同一个方法,前后名称不一致的原因:升级AGP 7.4.2 + R8后,使用applymapping 打patch的时候,出现了很多 java.lang.AbstractMethodError 的错误,可能是R8对applymapping存在bug,尝试过一些方法无法解决,因此禁用了applymapping,缺点是打包动态部署产物体积变大。

使用的tinker版本

最早使用 1.9.14.25 存在问题,升级到v1.9.15.1 依旧。

xiangtailiang avatar May 20 '25 02:05 xiangtailiang

您好!很高兴收到您的邮件,稍后查看。

jacklongway avatar May 20 '25 02:05 jacklongway

这是来自QQ邮箱的自动回复邮件。您好,来信已收到,谢谢您,我会及时回复您的!O(∩_∩)O~

canlan818 avatar May 20 '25 02:05 canlan818

您好!很高兴收到您的邮件,稍后查看。

期待回复

xiangtailiang avatar Jun 25 '25 08:06 xiangtailiang