首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android中使用JDK17 & Record ()

在Android中使用JDK17 & Record ()
EN

Stack Overflow用户
提问于 2022-01-20 09:56:16
回答 2查看 1.6K关注 0票数 6

第1部:-

在获得这个版本的Android之后,我可以在我的项目中使用JDK17。一切都很好,没有构建失败,没有运行时错误,等等(就像增强开关正常工作一样) ....but --这个警告在每个构建过程中不断出现。有什么方法可以让抑制吗?

(警告文本-> “一个或多个类的文件版本>= 56不受官方支持”)

这些是build.gradle文件:

(1):

代码语言:javascript
复制
buildscript {

   repositories {
       google()
       mavenCentral()
   }
   dependencies {
       classpath 'com.android.tools.build:gradle:7.1.0-rc01'
       classpath 'com.google.android.gms:strict-version-matcher-plugin:1.2.2'

       // NOTE: Do not place your application dependencies here; they belong
       // in the individual module build.gradle files
   }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

(2):

代码语言:javascript
复制
apply plugin: 'com.android.application'
apply plugin: 'com.google.android.gms.strict-version-matcher-plugin'

android {
    compileSdkVersion 32
    buildToolsVersion '32.0.0'
    defaultConfig {
        applicationId "com.Sujal_Industries.SelfEmot"
        minSdkVersion 21
        targetSdkVersion 32
        versionCode 11
        versionName "1.3.1"
    }
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'androidx.recyclerview:recyclerview:1.3.0-alpha01'
    implementation 'androidx.core:core-splashscreen:1.0.0-beta01'
    implementation 'com.google.mlkit:image-labeling:17.0.6'
    implementation 'com.google.android.material:material:1.6.0-alpha01'
    implementation 'com.github.bumptech.glide:glide:4.12.0'
    implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
    implementation 'io.reactivex.rxjava3:rxjava:3.1.3'
}

(我试着寻找类似的警告,但没有运气)

第2部:-

最近,我发现Android现在显示了创建一个新的记录的选项。

但是,当我创建一个项目并构建该项目时,会弹出以下错误:

所以..。有没有办法在包中强制添加类?

(如果对此需要更多的资料/澄清,请告诉我)

编辑:我知道11以上的版本不是官方支持的,但没有解决办法吗?

EN

回答 2

Stack Overflow用户

发布于 2022-01-25 09:36:08

For Part 1:警告意味着您的项目中有一个或多个类,这些类不支持高于11个的Java。

有些依赖项不是为JDK 17编译的,这是因为Android目前不支持Java 17,这意味着您混淆了产生此警告的不同版本的Java Bitcode。

Java版本号

用于第二部分:您正在尝试使用一个记录,这是目前在Android中不支持的。

摘要:您已经将项目的Java设置为Java17,目前不支持该版本:

代码语言:javascript
复制
compileOptions {
    sourceCompatibility JavaVersion.VERSION_17
    targetCompatibility JavaVersion.VERSION_17
}

目前可以达到的最高值是Java 11,这意味着您必须将compileOptions更改为:

代码语言:javascript
复制
compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}
票数 9
EN

Stack Overflow用户

发布于 2022-01-31 15:25:06

Android支持的java字节码的最新版本是Java 7。

Android支持一些后期的java特性-- https://developer.android.com/studio/write/java8-support

这些特点是“语法糖”-当轻量和短代码结构取代复杂的结构,以提高可读性。这些特性不需要JVM中的重大更改,可以重新编译到java字节码的早期版本中。

"Desugaring“是指在可能的情况下将java 8(或更高版本)的源代码编译为java 7的字节码。

大多数Java8+特性不受支持

如果您想以现代的方式为Android编写代码,就必须切换到Kotlin。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70784107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档