Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

913
Views
Using JDK17 & Record in Android Studio (Java, Android)

enter image description here

Part 1 :-

After getting this version of Android Studio, I am able to use JDK17 in my project. Everything works great, no build fails, no runtime error, etc. (like enhanced-switch is working fine) ....but this warning keeps coming during each build. Is there any way to suppress this?

enter image description here (Warning Text -> "One or more classes has file version >= 56 which is not officially supported")

These are the build.gradle files:

(1):-

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):-

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'
}

(I tried searching for similar warnings but no luck)

Part 2 :-

Recently, I found that Android Studio is now showing the option to create a new Java Record. enter image description here

But when I create one and build the project, this error pops up: enter image description here

So.. is there any way to forcefully add that Record class in java.lang package?

(If any more information/clarification is needed on this, please let me know)

Edit: I am aware of the fact that versions above 11 aren't officially supported but isn't there a workaround?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

The latest version of java bytecode supported by Android is Java 7

Android SDK supports desugaring for some of the later java features - https://developer.android.com/studio/write/java8-support.
These features are "syntactic sugar" - when light and short code constructions replace complex constructions to improve readability. Such features do not require significant changes in the JVM, and can be recompiled into previous versions of java bytecode

"Desugaring" means that source code from java 8 (or later) is compiled into bytecode of java 7 when it is possible

Most of Java8+ features are unsupported

If you want to write code for Android in a modern manner you have to switch to Kotlin

over 4 years ago · Santiago Trujillo Report

0

For Part One: The Warning means that you have one or more classes within your project which are not supported for Java Versions higher than 11.

There are some dependencies which your project which are not compiled for JDK 17. That's because Android currently has no support for Java 17. This means you are mixing up different Versions of Java Bitcode which produces this warning.

Java Version Numbers

For Part Two: You are trying to use a record, which is currently not supported in Android.

Summary: You have set the Java Version for your Project to Java 17, which is currently not supported:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_17
    targetCompatibility JavaVersion.VERSION_17
}

The highest you can currently go is Java 11 which means you have to change the compileOptions to:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!