La nueva versión 2.0 está disponible en 3 versiones:
- com.android.tools:desugar_jdk_libs_nio:2.0.2: la versión nio incluye toda la eliminación de azúcar disponible, incluida la API java.nio, java.time, flujos y funciones.
- com.android.tools:desugar_jdk_libs:2.0.2: la versión predeterminada incluye la eliminación de azúcar para las API java.time, stream y functions. Es similar a la eliminación de azúcar de la API 1.x ya disponible, pero se actualizó con las API agregadas en Android 13.
- com.android.tools:desugar_jdk_libs_minimal:2.0.2: la versión mínima incluye solo el paquete java.util.function y correcciones de errores en colecciones concurrentes. Está diseñado para una sobrecarga mínima de tamaño de código.
Habilitar más funciones de eliminación de azúcar tendrá un mayor impacto en el tamaño del código de su aplicación. La especificación mínima tiene, como su nombre lo indica, un impacto mínimo en el tamaño del código de la aplicación. La especificación nio tiene el mayor impacto.
Las nuevas API de java.nio
Las nuevas API de java.nio admitidas en la eliminación de azúcar de API incluyen:
- Todas las clases y API en java.nio.file como BasicFileAttributes, manipulación de archivos o uso de java.nio.file.Path.
- Algunas extensiones de java.nio.channels, como los métodos FileChannel#open.
- Algunos métodos de utilidad como File#toPath.
El siguiente fragmento de código ilustra cómo ahora puede usar las nuevas API de java.nio en todos los dispositivos, incluidos los que ejecutan Android 7 y versiones anteriores, a través de los métodos kotlin.io.path que dependen de java.nio.file.Files. Se puede crear, escribir, leer un archivo temporal y consultar sus atributos básicos y su existencia mediante la nueva API java.nio.
importar android.util.Log importar java.nio.file.StandardOpenOption.APPEND importar kotlin.io.path.createTempDirectory importar kotlin.io.path.deleteIfExists importar kotlin.io.path.exists importar kotlin.io.path.fileSize importar kotlin .io.path.readLines import kotlin.io.path.writeLines … val TAG = “java.nio Test” val tempDirectory = createTempDirectory(“tempFile”) val tempFile = tempDirectory.resolve(“tempFile”) tempFile.writeLines( listOf(“primero”)) tempFile.writeLines(listOf(“segundo”), options = arrayOf(APPEND)) Log.d(TAG,”Content: ${tempFile.readLines()}”) Log.d(TAG, “Tamaño: ${tempFile.fileSize()}”) Log.d(TAG,”Existe (antes de eliminar): ${tempFile.exists()}”) tempFile.deleteIfExists() Log.d(TAG,” Existe ( después de la eliminación): ${tempFile.exists()}”) |
// Salida logcat resultante. Contenido: primero segundo Tamaño: 13 Existe (antes de la eliminación): verdadero Existe (después de la eliminación): falso |
Sin embargo, algunas funciones no se pueden emular para dispositivos que ejecutan Android 7 y versiones anteriores y, en su lugar, generan una instancia de UnsupportedOperationException o devuelven un valor nulo. Todavía funcionan en dispositivos con Android 8 o posterior, por lo que el código existente protegido por una verificación de nivel de API debería funcionar como antes. Ver el lista completa de API disponibles y limitaciones conocidas.
El código ha sido probado extensivamente, pero estamos intentando entradas adicionales por los desarrolladores de aplicaciones.
¡Prueba la nueva versión de la API de eliminación de azúcar y cuéntanos cómo te funcionó!
Para más información ver la publicación Compatibilidad con las últimas API del lenguaje Java desde que se introdujo la eliminación de azúcar API.
Java y OpenJDK son marcas comerciales o marcas comerciales registradas de Oracle y/o sus filiales.