zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android 最低版本从 5.0 降至 4.2 将会引发的问题总结

Android 总结 版本 引发 5.0 4.2 最低 将会
2023-09-11 14:22:56 时间

今天把代码放到设备上去调试的时候报: java.lang.NoClassDefFoundError: java.util.Objects 的错误。
(现有的设备很多都还是 Android 4.2,API 17 的,很多函数都不支持很是蛋疼)
在这里插入图片描述通过在报错的地方打上断点进行调试,F7进入函数。可以发现当走到这一步后,接着按F8执行下一步函数,立马就跳到 ActivityThread.java 页面,然后抛出异常。

在这里插入图片描述
Objects.requireNonNull 这个静态方法,支持在 API 21 (Android 5.0.+)以上,Android 4.2.2(即 Android 17)并不支持该方法(此外 Objects.equals 也不支持)
在这里插入图片描述

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
	WebViewCacheInterceptorInst.getInstance().init(builder);
}

Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 19
在这里插入图片描述

总结:如果你的手机要兼容 Android 5.0 以下的设备

不支持的库最低API版本代替方案
com.squareup.retrofit2:retrofit21MyUrlConnection
com.squareup.okhttp3:okhttp21MyUrlConnection
ren.yale.android:cachewebviewlib21webview原生cache
不支持的方法最低API版本代替方案
window.setStatusBarColor21不设置状态栏
System.lineSeparator()19使用\n
webView.evaluateJavascript19使用 loadUrl 替代,但 loadUrl 最多支持2M
popupWindow.showAsDropDown(anchor, xoff, yoff, gravity)19使用showAsDropDown(anchor, xoff, yoff) 代替
不支持的路径最低API版本指代的路径
:–:–:–
context.getDataDir()24/storage/emulated/0/Android/data/包名/cache
context.getCodeCacheDir()21/data/user/0/包名/code_cache
context.getNoBackupFilesDir()21/data/user/0/包名/no_backup
context.getExternalCacheDir()14/storage/emulated/0/Android/data/包名/cache
context.getDownloadDir()14/storage/emulated/0/Android/data/包名/files/Documents

腾讯信鸽推送(由于在某些小众设备兼容性没处理好,会崩溃)
samsung SM-G9350,API24 加载大于10KB图片就崩溃的问题