Tencent / Shadow

零反射全动态Android插件框架
BSD 3-Clause "New" or "Revised" License
7.36k stars 1.29k forks source link

线上偶现Rejecting re-init on previously-failed class xxx,NoClassDefFoundError Class not found using the boot class loader; no stack trace available #1312

Closed coderloveryan closed 2 months ago

coderloveryan commented 2 months ago

https://issuetracker.google.com/issues/230642315

2YTIgWviK6 根据此issue中回复看,该问题是特定情况下会出现的类加载问题

shifujun commented 2 months ago

Shadow没有用什么非公开的API加载类,所以AOT相关的这方面的问题基本上没什么可做的。

如果说用DexClassloader加载类不可行了,Shadow这种插件技术也就不可行了。

如果说是可以针对特定情况特殊编码可以绕过的场景,Shadow还是可以凭借动态更新的特性来解决的。

另外就像#1245 中讨论的,“在 ART 中强制要求 AOT 正确性”这个变更就表明了Android系统之前的实现就是有Bug的。所谓特定情况可能就是target API在29以前的情况。