我在Profuard/ R8方面没有其他人那么有经验。但是,我想我在Android Studio中使用的Profuard/ R8工具中偶然发现了一个bug。
我有一些在独立应用程序中运行良好的Java代码,当我尝试在Android项目中使用它时,我遇到了崩溃。
Process: com.example.fragmentbasics, PID: 8642 java.lang.NoSuchMethodError: No virtual method findFirst()Ljava/util/Optional; in class Ljava/util/ServiceLoader; or its super classes (declaration of 'java.util.ServiceLoader' appears in /apex/com.android.art/javalib/core-oj.jar)
当我在调试器中查看代码时,它确实看起来好像R8工具已经删除了该方法。
我正在阅读一篇关于Proguard如何经常在反射方面犯错误的文章,这就是这个问题的实质。
我在proguard-android.txt文件中包含了以下几行
-keepclassmembers class java.util.ServiceLoader {
<methods>;
}
但是,运行代码时不断抛出找不到方法错误。
关于如何强制Profuard/ R8不删除此方法,您有什么想法吗?
2条答案
按热度按时间2cmtqfgy1#
尝试使用
5lwkijsr2#
尝试
或