Android 11 se envía a la mayoría de los teléfonos nuevos, pero Android 12 se ha implementado en dispositivos Pixel en todas partes. Únase a este seminario web para ver qué ha cambiado en estas últimas versiones de Android y vea algunas de las mejores prácticas para el desarrollo de Android con sugerencias para orientar las últimas versiones del sistema operativo más popular.
Ver o descargar Presentaciones de Google
Table of Contents
Cuota de mercado mundial de sistemas operativos de escritorio, móviles y tabletas
https://gs.statcounter.com/os-market-share/desktop-mobile-tablet/worldwide/#monthly-200901-202201
Cuota de mercado de fabricantes móviles en todo el mundo (enero de 2020 – enero de 2022)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Cuota de mercado de fabricantes de móviles en todo el mundo (enero de 2022)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Cuota de mercado de Android frente a iOS en todo el mundo (enero de 2020 – enero de 2022)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Cuota de mercado de la versión móvil de Android en todo el mundo (enero de 2020 – enero de 2022)
https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201
Versión móvil de Android: cuota de mercado en todo el mundo (enero de 2022)
Android 11 es el líder actual ( las versiones 9 a 11 representan el 76,4 %)
- Android 12 lanzado el 4 de octubre de 2021
- Android 11 lanzado el 8 de septiembre de 2020
- Android 10 lanzado el 3 de septiembre de 2019
- Android 9 lanzado el 6 de agosto de 2018
- Android 12 = API 31
- Android 11 = API 30
- Android 10 = API 29
- Android 9 = API 28 (Pastel)
https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201
Requisitos de seguridad y rendimiento de Android Play
- Cada año, el requisito de targetSdkVersion avanzará. Dentro de un año después de cada Android
- lanzamiento, las nuevas aplicaciones y las actualizaciones de aplicaciones deberán apuntar al nivel de API actualizado o superior.
- Noviembre 2021:
- Nivel de API objetivo 30 (Android 11)
- Publica con el formato de Android App Bundle.
- Requerido por Google Play Console
- Consulte la guía de migración de API para conocer otros cambios: developer.android.com/distribute/best-practices/develop/target-sdk
Cambios de Android en Delphi 11
*** – link
docwiki.embarcadero.com/RADStudio/Alexandria/en/What%27s_New
¿Soporte para Android 12?
Actualización de proyectos de Android existentes
● Abra una compilación de proyecto de Android con una versión anterior.
● Navegue a la ventana acoplable Proyectos.
● Seleccione Android de 32 bits como plataforma de destino activa.
● Haga clic derecho en el nodo Bibliotecas.
● Haga clic en Revertir los archivos del sistema a los valores predeterminados.
● Personalizar con bibliotecas de terceros, etc.
● Repetir para Android-64.
Actualización de sus herramientas de Android
- Delphi instala opcionalmente Android SDK 25.2.5 y actualizaciones durante la instalación
- Agregue ADB a su ruta:
- C:UsersPublicDocumentsEmbarcaderoStudio22.0CatalogRepositoryAndroidSDK-2525-22.0.42600.6491platform-tools
- Agregue SDKManager a su ruta:
- C:UsuariosPúblicoDocumentosEmbarcaderoStudio22.0CatálogoRepositorioAndroidSDK-2525-22.0.42600.6491toolsbin
- Correr:
- adb matar-servidor
- Administrador de SDKM: actualización
- versión adb
- Si obtiene un error “.android/repositories.cfg no se pudo cargar”.
- Verifique que tenga una carpeta .android en su directorio de usuario
- Cree un archivo repositories.cfg vacío
- Última versión (a partir de febrero de 2022)
- Puente de depuración de Android versión 1.0.41
- Versión 32.0.0-8006631
Depuración inalámbrica
- Agregado en Android 11 (API 30)
- Ingrese al modo de desarrollador en Android (toque “Número de compilación” siete veces)
- Habilitar la depuración inalámbrica
- Opciones de desarrollador -> Depuración inalámbrica
- Toque “Emparejar dispositivo con código de emparejamiento”
- Marque “Permitir siempre en esta red”, luego presione “Permitir” cuando se le solicite.
- Desde Windows CMD
- servidor de inicio adb
- adb pair [ip]:[port] (desde el diálogo de emparejamiento)
- [código de emparejamiento]
- adb connect [ip]:[port] (desde la pantalla de depuración inalámbrica)
- Actualizar dispositivos en IDE
Formato del paquete de aplicaciones de Android
Permite que Google Play use el modelo de servicio de aplicaciones Dynamic Delivery para generar APK optimizados para cada dispositivo.
- Proyecto > Opciones > Construcción > Compilador Delphi > Compilación
- Generar archivo de paquete de aplicaciones de Android (arm + arm64)
Tras una generación exitosa del paquete de aplicaciones, el IDE presenta un cuadro de diálogo que contiene la ruta del archivo .aab.
Nota: No puede ejecutar ni depurar un paquete de aplicaciones. Para depurar la aplicación, debe usar el formato de paquete .APK
Nuevo modelo de permiso de tiempo de ejecución de Android
- Introducido en Android 6.0 (API 23) Marshmallow
- La biblioteca de soporte cubre versiones anteriores de Android
- El nuevo modelo agiliza el proceso de actualización automática
- Aprobación de permisos desencadenada en el primer uso
- En lugar de aprobar todos los permisos en la instalación
- Brinda a los usuarios finales más control sobre los permisos
- Los permisos individuales se pueden permitir o denegar por aplicación y cambiar más tarde
- Administrado a través de los nuevos métodos de la API de Android checkSelfPermission() y requestPermissions()
Más información en developer.android.com/training/permissions/requesting
Diálogo de aprobación de permisos antiguos
- Durante la instalación se aceptan todos los permisos.
- El usuario no puede denegar permisos individuales
- Todos los permisos publicados en el manifiesto.
- Si los permisos cambian, deben aprobarse antes de actualizar
Nuevo cuadro de diálogo de aprobación de permisos
- La primera vez que solicita el permiso individual, el usuario tiene la opción de Denegar o Permitir
- Si el usuario niega una vez, puede evitar que la aplicación vuelva a preguntar
- Es importante cuándo y cómo se pregunta (más sobre esto más adelante)
- Todos los permisos aún publicados en el manifiesto
Los usuarios tienen control de permisos granular ahora
PeligrosocontraNormal permisos
- No se solicita al usuarioNormalpermisos
- Ejemplos: Internet, Vibrar, Bluetooth, etc.
- El usuario debe aprobarPeligrosopermisos
- Por lo general, estos implican privacidad o un costo potencial
- Se agrupan en grupos de permisos:
- Calendario, registro de llamadas, cámara, contactos, ubicación, micrófono, teléfono, sensores, SMS y almacenamiento
- El usuario aprueba un grupo completo
- Por ejemplo, tanto enviar como recibir SMS
- El desarrollador aún debe declarar y solicitar todos los permisos del sistema operativo en el manifiesto.
Más información developer.android.com/guide/topics/permissions/overview
Cómo pedir permiso – Delphi
Más información: docwiki.embarcadero.com/RADStudio/en/Android_Permission_Model
El servicio de permisos
- System.Permissions contiene una instancia de TPermissionsService llamada PermissionsService o accede a ella a través de la propiedad DefaultService
- IsPermissionGranted: si actualmente se otorga un permiso a la aplicación
- RequestPermissions: Solicita permisos específicos y su familia
- IsEveryPermissionGranted: si los permisos enumerados se otorgan actualmente
- Nuevos tipos relevantes/relacionados agregados a las unidades RTL de Android
- Manifest.permission y Build.VERSION en Androidapi.JNI.Os.pas
- ContextCompat, ActivityCompat y PermissionChecker en Androidapi.JNI.Support.pas
Método IsPermissionGranted
- Miembro de System.Permissions.TPermissionsService
- function IsPermissionGranted(const APermission: string): Boolean;
- Averigüe si actualmente se otorga un permiso a la aplicación
- Nunca asuma que todavía se concede
- Si no hay un servicio de permisos de plataforma implementado para realizar ninguna verificación, entonces responde de manera predeterminada que se otorgaron todos los permisos.
Método IsEveryPermissionGranted
- docwiki:/RADStudio/Usos_Permisos
- docwiki:Libraries/System.Permissions.TPermissionsService.IsEveryPermissionGranted
- Miembro de System.Permissions.TPermissionsService
- function IsEveryPermissionGranted(const APermissions: TArray<string>): Boolean;
- Averigüe si todos los permisos enumerados están actualmente otorgados
- Nunca asuma que todavía se concede
- Cadenas de permisos encontradas en TJManifest_permission.JavaClass de Androidapi.JNI.Os
- Lista de permisos y descripciones
Solicitar permisos
- Miembro de System.Permissions.TPermissionsService
- procedimiento Solicitud de permisos (
- const APermisos: TArray<cadena>;
- const AOnRequestPermissionsResult:
- TRequestPermissionsResult[Evento|Proc];
- AOnDisplayRationale: TDisplayRationale[Event|Proc] = nil);
- Solicitar uno o más permisos
- Se solicitarán todos los permisos que no estén concedidos actualmente.
- De antemano, se puede mostrar una justificación al usuario cuando se ha establecido una cadena de justificación para el permiso en cuestión solicitando un permiso nuevamente que se le negó previamente se pasa una rutina de visualización de justificación
- docwiki:Libraries/System.Permissions.TPermissionsService.RequestPermissions
TRequestPermissionsResult[Evento|Proc]
- Devolución de llamada desde RequestPermissions
- TRequestPermissionsResult[Evento|Proc] =
- procedimiento(Remitente: TObject;
- const APermisos: TArray<cadena>;
- const AGrantResults: TArray<TPermissionStatus>);
- Tipo de devolución de llamada para cuando el sistema haya procesado nuestras solicitudes de permiso
- Para cada permiso solicitado en APermissions, hay un valor booleano en AGrantResults que indica si se otorgó el permiso.
Cuándo pedir permisos
Cuándo preguntar –Críticopermisos
Cuándo preguntar –Secundariopermisos
Otras mejores prácticas
- Usar la versión asíncrona de Métodos y Diálogos
- ¡NO bloquee el hilo de la interfaz de usuario!
- Siempre use HTTPS (todo debe ser seguro)
- Utilice las nuevas bibliotecas de cliente HTTP docwiki.embarcadero.com/RADStudio/en/Using_an_HTTP_Client
- Indy todavía está disponible, actualizado y soportado
- Conoce la Biblioteca de Programación Paralela
- Conozca System.IOUtils y TPath
- Conozca ADB, logcat y Log.d
Más información
- Escribir en la tarjeta SD stackoverflow.com/a/57600189/255
- Obtener la ruta de la tarjeta SD extraíble
- Androidapi.JNI.Os.pas
- getExternalStorageDirectory
- getExternalStoragePublicDirectory
- getExternalStorageState
- Androidapi.JNI.Os.pas
- Consulte el “Componente de permisos móviles para Android” en GetIt
Próximos pasos
- Iniciar una prueba de RAD Studio embarcadero.com/products/rad-studio/start-for-free
- Obtenga la edición comunitaria embarcadero.com/products/delphi/starter
- ¡Actualice hoy! embarcadero.com/app-desarrollo-herramientas-tienda/rad-studio
- Ver ofertas especiales embarcadero.com/radoffer
- Suscríbete en YouTube youtube.com/c/EmbarcaderoTechnologies
- Síguenos en Twitter twitter.com/embarcaderotech
- Me gusta en Facebook facebook.com/embarcaderotech
- Síganos en LinkedIn linkedin.com/company/embarcadero-technologies
- Lee nuestro blog blogs.embarcadero.com
Actualice a Delphi 11 hoy embarcadero.com/products/delphi