我在设备(android 4.3)中运行我的应用程序时遇到问题,并且出现此错误:E / AndroidRuntime:致命异常:main java.lang.NoClassDefFoundError:java.util.Objects
我知道引发该异常是因为java.util.Objects的所有静态方法都可以在API 19(Android 4.4。+)以上使用,因此该方法在该Android版本中不存在,并且引发了NoClassDefFoundError。
但是我还需要我的应用程序与4.3版兼容,我该如何解决?
trace:java.lang.NoClassDefFoundError:okhttp3.CertificatePinner.withCertificateChainCleaner(CertificatePinner.java:231)处的java.util.Objects,okhttp3.OkHttpClient。(OkHttpClient.java:238)在okhttp3.OkHttpClient $ Builder.build( OkHttpClient.java:1015)
答案 0 :(得分:1)
您可能正在使用OkHttp 3.13.x或更高版本 3.13.0是OkHttp的第一个版本,将最低要求提高到了Android 5+ API 21
请尝试3.12.3版本,因为它应支持具有Android 2.3+(API 9+)的设备
来源:https://github.com/square/okhttp/blob/master/CHANGELOG.md
答案 1 :(得分:0)
不要使用这些电话。在您自己的班级中提供您自己的版本。在添加功能之前,不能在操作系统的版本上使用该功能。没有办法做到这一点。但是您可以从OpenJDK之类的工具中找到这些功能的开源实现,然后将该类放入您的应用中并在其中使用它。
但是您为什么要花大力气支持4.3?在所有使用的设备中,只有0.4%是4.3版。来源-Google:https://developer.android.com/about/dashboards/目前不值得花大力气和费用来支持。 19台合并之前的所有设备仅占使用中所有设备的3.5%,而且这些设备在地理位置上非常集中-除非您的主要受众位于非洲或亚洲的贫困地区,否则您只会看到其中的一小部分。在调查这个问题上,您可能已经花了更多的钱(随着时间的推移),而获得的收入却比以往任何时候都要多。
哦,请注意,这些数字是从十月份开始的-现在会更小。