HomeAndroidAPI desugaring supporting Android 13 and java.nio

API desugaring supporting Android 13 and java.nio


The brand new model 2.0 launch is available in 3 flavors:

  • com.android.instruments:desugar_jdk_libs_nio:2.0.2 – the nio model contains all of the desugaring out there together with the java.nio, java.time, stream, and capabilities APIs.
  • com.android.instruments:desugar_jdk_libs:2.0.2 – the default model contains desugaring for the java.time, stream, and capabilities APIs. It’s just like model 1.x API desugaring already out there, however up to date with APIs added as much as Android 13.
  • com.android.instruments:desugar_jdk_libs_minimal:2.0.2 – the minimal model contains solely the java.util.operate package deal and bug fixes on concurrent collections. It’s designed for minimal code measurement overhead.

Opting into extra desugaring options will result in a bigger impression in your app’s code measurement. The minimal specification has, as its identify signifies, a minimal impression on the code measurement of the app. The nio specification has probably the most impression.

The brand new java.nio APIs

The brand new java.nio APIs supported in API desugaring embody:

  • All of the courses and APIs in java.nio.file similar to BasicFileAttributes, file manipulation, or utilization of java.nio.file.Path.
  • Some extensions of java.nio.channels, such because the FileChannel#open strategies.
  • A couple of utility strategies similar to File#toPath.

The next code snippet illustrates how one can now use the brand new java.nio APIs on all gadgets, together with gadgets operating Android 7 and decrease, via the strategies of kotlin.io.path which rely on java.nio.file.Recordsdata. A temp file may be created, written into, learn, and its fundamental attributes and its existence may be queried utilizing the brand new java.nio APIs.

import android.util.Log
import java.nio.file.StandardOpenOption.APPEND
import kotlin.io.path.createTempDirectory
import kotlin.io.path.deleteIfExists
import kotlin.io.path.exists
import kotlin.io.path.fileSize
import kotlin.io.path.readLines
import kotlin.io.path.writeLines

...
val TAG = "java.nio Take a look at"
val tempDirectory = createTempDirectory("tempFile")
val tempFile = tempDirectory.resolve("tempFile")
tempFile.writeLines(listOf("first"))
tempFile.writeLines(listOf("second"), choices = arrayOf(APPEND))
Log.d(TAG,"Content material: ${tempFile.readLines()}")
Log.d(TAG,"Dimension: ${tempFile.fileSize()}")
Log.d(TAG,"Exists (earlier than deletion): ${tempFile.exists()}")
tempFile.deleteIfExists()
Log.d(TAG,"Exists (after deletion): ${tempFile.exists()}")

// Ensuing logcat output.
Content material: first second
Dimension: 13
Exists (earlier than deletion): true
Exists (after deletion): false

A couple of options nonetheless can’t be emulated for gadgets operating Android 7 and decrease and as a substitute throw an occasion of UnsupportedOperationException or return null. They nonetheless work on gadgets operating Android 8 or increased, so current code guarded by an API stage test ought to work because it used to. See the full record of APIs out there and the identified limitations.

The code has been extensively examined, however we’re in search of extra inputs from app builders.

Please check out the brand new model of API desugaring, and tell us the way it labored for you!

For extra background see the publish Assist for newer Java language APIs from when API desugaring was launched.

Java and OpenJDK are emblems or registered emblems of Oracle and/or its associates.

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments