Migrar aplicaciones a Android12.En este artículo, explicaré… | Por Huma Imam | Mar 2022
En este artículo, explicaré la migración de aplicaciones de Android a Android 12 (API 31), este artículo se basa únicamente en mi experiencia personal al intentar implementar la nueva API de pantalla de bienvenida de Android.
Antes de pasar a la implementación, veamos por qué tuvimos que migrar nuestra aplicación a Android 12,
Por qué elegir Android 12
Con cada lanzamiento de Android, se introducen nuevas funciones y cambios de comportamiento, diseñados para hacer que Android sea más útil, más seguro y más eficiente. En muchos casos, su aplicación funcionará exactamente como se esperaba desde el primer momento, mientras que en otros casos es posible que deba actualizar su aplicación para adaptarse a los cambios de la plataforma.
Ha habido muchos cambios de comportamiento en Android 12, algunos de los cuales se detallan a continuación.
- Estirar el efecto de desplazamiento.
- pantalla de bienvenida de la aplicación
- Análisis de intención de red
- Vistas previas de la cámara en la pantalla grande y más.
echar un vistazo Cambios en el comportamiento de Android 12 leer más:)
Paso 1: cambie compileSdkVersion a 31,
Cambie su compileSdkVersion a 31 Si recientemente actualizó su aplicación, podría ser 30.Para hacer esto, necesitamos establecer estos valores en build.gradle
valor de nivel de API SDK de actualización de archivos
android {
compileSdkVersion 31defaultConfig {
targetSdkVersion 31
minSdkVersion 21
...
}
}
aquí, compilarSdkVersion Define qué versión del SDK de Android usará gradle para compilar su aplicación.
Versión del SDK de destino es un atributo que le dice al sistema en qué versión de Android se diseñó y probó la aplicación.
Paso 2: sincroniza y ejecuta tu aplicación
Actualizado build.gradle
todas las nuevas restricciones de Android 12 se aplicarán a su aplicación
Paso 3: exportar componentes
Las exportaciones deben especificarse explícitamente con una aplicación dirigida a la API 31, debe configurar android:exported
Etiquetas para cualquier actividad, servicio o receptor de transmisión que use un filtro de intención y deba accederse desde fuera de nuestra aplicación (a través del sistema operativo u otras aplicaciones)
...
android:exported="true”>
......
android:exported="false">
......
android:exported="true">
......
android:exported="false”>
......
android:exported="true”
/>
Si no agrega esta etiqueta en el componente, la aplicación no funcionará, seguirá mostrando este error en dispositivos Android 12 y superiores,
Si recibe este error a pesar de agregar esta etiqueta en el componente, asegúrese de haberla agregado a su actividad cuando use una biblioteca de terceros en su aplicación.
En mi caso, utilicé «com.invitereferrals.invitereferrals.AppUpdateReceiver» en mi aplicación, por lo que tuve que agregar esta etiqueta en este receptor y en mi manifiesto.
android:exported="true"/>
Paso 4: Variabilidad de intención pendiente
desde Android12
Después de eso, debemos establecer la mutabilidad para cada uso de la intención pendiente, si creemos que la versión mínima admitida de nuestra aplicación es 23, entonces podemos establecer el indicador inmutable o mutable para el objeto de intención pendiente.
Consideremos un ejemplo del uso de PendingIntent en mi aplicación, es decir, NotificationManager
val pendingFlag = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_ONE_SHOT
else PendingIntent.FLAG_ONE_SHOTval pendingIntent = PendingIntent.getActivity(context, uniqueId /* Request code */, intent,
pendingFlag)val notificationBuilder = NotificationCompat.Builder(context, uniqueId.toString())
.setContentTitle(title)
.setContentIntent(pendingIntent)
val notificationManager = context.getSystemService(NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(uniqueId, notificationBuilder.build())
Paso 5: actualice las dependencias de terceros
Tendrá que actualizar alguna biblioteca de terceros y usar una versión estable de la biblioteca para deshacerse del bloqueo debido a IllegalArgumentException, en mi caso tuve que actualizar las siguientes dependencias
implementation 'androidx.room:room-ktx:2.4.1'
implementation 'androidx.room:room-compiler:2.4.1'
Ahora estamos listos para las funciones actualizadas y los cambios de comportamiento introducidos en Android 12.
¡Gracias por seguir conmigo hasta el final y espero poder compartir información valiosa con ustedes! ! , si te gusta mi artículo, ¡aplaude y sígueme para más!