Android app兼容低版本Java环境

这篇具有很好参考价值的文章主要介绍了Android app兼容低版本Java环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文地址: Android app兼容低版本Java环境 - Stars-One的杂货小窝

起因是修复一个Bug遇到的问题,找到了一个可以让app兼容低版本java的方法

众所周知,Android版本更新后,其内置的JRE环境也随之更新了

假如我们在app中用到了JDK8的特有的属性,而用户的手机设备系统还是比较低,而没有JRE8环境,自然运行的时候就会提示类不存在了

问题说明

项目中使用到的一个库kizitonwose/Calendar: A highly customizable calendar view and compose library for Android.

但是由于其内置使用的是Jdk8的对应的日期类,但是低版本的Android并不是jdk8的运行环境,所以会导致在低版本运行出现类未定义的错误,如下错误:

Fatal Exception: java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/temporal/WeekFields;
       at com.kizitonwose.calendar.core.ExtensionsKt.firstDayOfWeekFromLocale(Extensions.kt:5)
       at com.kizitonwose.calendar.core.ExtensionsKt.daysOfWeek$default(Extensions.kt:5)

实际上,开源库文档已经提供了低版本适配对应说明(但这个项目之前是组长写的,而他是直接将库代码复制过来了,没注意那个文档,所以导致后面线上环境低版本的android设备报错了)

解决方法

这里说的问题的解决方法,也是本文提到的兼容低版本的方法

我们需要可以使用google的一个库

coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'

最新版本可以在此链接找到

并在app模块的gradle文件里配置以下信息即可:

android {
  defaultConfig {
    // Required ONLY if your minSdkVersion is below 21
    multiDexEnabled true
  }

  compileOptions {
    // Enable support for the new language APIs
    coreLibraryDesugaringEnabled true
    // Set Java compatibility (version can be higher if desired)
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }

  kotlinOptions {
    // Also add this for Kotlin projects (version can be higher if desired)
    jvmTarget = "1.8"
  }
}

dependencies {
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:<latest-version>'
}

最后,如果以后我们需要使用到JDK高版本的特性,可以使用上面的方法,让低版本的Android系统也能使用上高版本JDK特性文章来源地址https://www.toymoban.com/news/detail-747347.html

到了这里,关于Android app兼容低版本Java环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android保存图片到相册,兼容Android10及以上版本

    Android 共享存储空间 访问共享存储空间中的媒体文件 MediaStore是android系统提供的一个多媒体数据库,专门用于存放多媒体信息的,通过ContentResolver即可对数据库进行操作。 MediaStore.Files: 共享的文件,包括多媒体和非多媒体信息; MediaStore.Audio: 存放音频信息; MediaStore.Image: 存放

    2024年02月11日
    浏览(55)
  • Android框架mqtt库无法兼容高版本android13的问题

    最近使用mqtt库,测试的时候发现在Android12及以下正常,但在13上闪退,闪退日志如下 提示很明显是version 31版本在创建PendingIntent的时候需要做适配,于是全局搜索把适配代码加上,代码如下 加上之后还是报同样的错误,几经周折才发现mqtt库里也用到了PendingIntent且没有做适配

    2024年02月07日
    浏览(37)
  • 实现Android深度加固:代码加密隐藏、资源加密隐藏、so库加密隐藏。附免费加固工具地址。兼容unity引擎。

    0.1.可自动批量循环改包 改包包括:自动换包名(可选),自动改类,清单处理等 使用场景:原包为母包,争取处理出来的包没有容易被标记的地方 0.2.可自动批量循环加固,改包后自动加固 使用场景:原包为母包,争取处理出来的包每个包都不一样 0.3 改包加固效果 原包代码不可见,原包

    2024年02月05日
    浏览(48)
  • Android 11 旧版本兼容修改:TelephonyManager的getDeviceId和getSubscriberId; WifiManager.setWifiEnabled

        随着Android的更新,越新的版本收紧的权限越来越多,伴随着很多曾经可用的接口慢慢地出现了问题。 比如: TelephonyManager.getSubscriberId() 在代码注释中已经写得很明白: The user 10125 does not meet the requirements to access device identifiers 要做的事情很简单, 找到权限检查的地方, 去掉

    2024年02月15日
    浏览(37)
  • 【移动端表格组件】uniapp简单实现H5,小程序,APP多端兼容表格功能,复制即用,简单易懂【详细注释版本】

    由于最近需要做移动端的项目 有个pc端的后台系统里面需要移一部分页面过来 而里面就有很多的表格,我就开始惯例网上先找前人栽的树,我好乘凉 然后找了一圈发现,不管是主流的移动端ui库或者网上自己写的帖子,或者uniapp的插件网站 都没有看到符合我要求的表格,然

    2024年02月02日
    浏览(113)
  • Spring Boot各版本与Java版本的对应兼容关系,与构建工具(Maven、Gradle)版本的对应兼容关系,对servlet 容器的支持

    by:垃圾程序员 当前文章具有时效性,在当前springboot的版本下做的整合。之后大家视情况可以直接到Spring的官网查看 Spring | Home Level up your Java code and explore what Spring can do for you. https://spring.io/ 下面是Spring Boot各个版本的支持时间 下面是Spring Boot 推荐使用的各个版面,并标注出

    2024年02月10日
    浏览(53)
  • Android Studio历史版本下载地址汇总

    原文地址: Android Studio历史版本下载地址汇总 - Stars-One的杂货小窝 由于新公司不给自带电脑,然后给了台新的电脑,于是就是需要重新下载Android Studio 但众所周知,一般新版本的软件可能不是太好用,可能这或那有点坑,于是理所当然想下载些稍微旧一点的版本来使用 但谷歌那边不

    2024年02月07日
    浏览(46)
  • 从GitHub下载的Android Studio项目,在较新版本AS打开出现版本不兼容问题的解决方法。

            在GitHub下载了一个Android Studio计算器项目,打开项目后出现一系列问题,本文简单记录出现的问题及解决方法。 问题描述:The specified Gradle installation directory \\\'G:AndroidAndroid Studiogradlegradle-2.14.1\\\' does not exist. 解决方法:按照以下步骤更改Gradle安装目录的路径 打开您的

    2024年02月06日
    浏览(68)
  • Android Studio版本升级后的问题 gradle降级、jdk升级 Compose 与 Kotlin 的兼容性对应关系

    AGPBI: {“kind”:“error”,“text”:“Can’t determine type for tag ‘macro name=“m3_comp_switch_disabled_selected_handle_color”?attr/colorSurface’”,“sources”:[{“file”:“/Users/fausto/.gradle/caches/transforms-3/4948d05d0ff6027d2e3c9f4a6010103b/transformed/material-1.7.0-alpha02/res/values/values.xml”}],“tool”:“Resource and

    2024年02月04日
    浏览(78)
  • 【Android】-- 如何对APP版本控制/更新?

    目录 一、 前提准备 1、获取服务器 2、使用工具操作云服务器  二、Json格式网页  三、创建file_paths.xml及修改AndroidManifest.xml 四、在java代码加入更新检测代码 效果如图:         可以强制更新和非强制更新,和浏览器下载安装包。         首先去获取云服务器,如:阿

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包