diff --git a/docs/html-intl/intl/es/preview/backup/index.jd b/docs/html-intl/intl/es/preview/backup/index.jd new file mode 100644 index 0000000000000..7e230836ad536 --- /dev/null +++ b/docs/html-intl/intl/es/preview/backup/index.jd @@ -0,0 +1,327 @@ +page.title=Copia de seguridad automática para aplicaciones +page.tags=copia de seguridad, recursos de la versión preliminar, androidm +page.keywords=copia de seguridad, copia de seguridad automática, versión preliminar +page.image=images/cards/card-auto-backup_2x.png +@jd:body + +
+ A menudo, los usuarios invierten tiempo y esfuerzo significativos para crear datos y configurar preferencias dentro de las aplicaciones. + Preservar los datos de los usuarios en caso de que reemplacen un dispositivo averiado o se actualicen a uno nuevo es una parte importante para garantizar una excelente experiencia del usuario. + Los dispositivos que ejecutan el sistema de la versión preliminar de Android M ayudan a garantizar una buena experiencia para los usuarios en estas circunstancias al realizar automáticamente copias de seguridad de los datos de la aplicación en Google Drive. + + Los datos de la aplicación se restauran automáticamente si un usuario cambia o actualiza un dispositivo. + +
+ ++ Las copias de seguridad automáticas se habilitan para todas las aplicaciones instaladas en dispositivos que ejecuten la versión preliminar de Android M. No se requiere ningún código de aplicación adicional. + El sistema les proporciona a los usuarios la capacidad de desactivar las copias de seguridad de datos automáticas. + También puede optar por limitar qué datos de su aplicación se incluyen en la copia de seguridad. +
+ ++ En este documento, se describe el nuevo comportamiento del sistema y el modo de especificar qué datos incluir en la copia de seguridad de la aplicación. + +
+ ++ Para preservar los datos que su aplicación crea en un dispositivo de usuario, la característica de copia de seguridad automática los carga a la cuenta de Google Drive del usuario y los cifra. + No se aplican cargos para usted ni para el usuario por el almacenamiento de datos y los datos guardados no se consideran al calcular la capacidad máxima de la cuenta personal de Google Drive del usuario. + Durante el período de la versión preliminar de Android M, los usuarios pueden almacenar hasta 25 MB por aplicación de Android. + +
+ ++ Las copias de seguridad automáticas se realizan cada 24 horas, cuando el dispositivo está inactivo, se está cargando y está conectado a una red Wi-Fi. + Cuando se cumplen estas condiciones, el servicio Backup Manager carga todos los datos de copia de seguridad disponibles a la nube. + Cuando el usuario pasa a un dispositivo nuevo, o desinstala y vuelve a instalar la aplicación de la copia de seguridad, una operación de restauración copia los datos incluidos en la copia de seguridad en el directorio de datos de la aplicación recientemente instalada. + + +
+ ++ Nota: Si su aplicación utiliza el servicio Android Backup heredado, este nuevo comportamiento no se aplica y el comportamiento de copia de seguridad existente funciona de manera habitual. + + +
+ + ++ No todos los datos de la aplicación se deben incluir en la copia de seguridad, como los archivos temporales y los cachés, por lo que el servicio de copias de seguridad automáticas excluye ciertos archivos de datos de manera predeterminada: + +
+ ++ Las copias de seguridad se realizan para los datos creados por cualquier aplicación instalada en un dispositivo con la versión preliminar de Android M, excepto en el caso de los archivos excluidos automáticamente que se mencionaron en la sección anterior. + Usted puede limitar y configurar aún más los datos que se incluyen en la copia de seguridad de su aplicación y, para ello, debe utilizar configuraciones en el manifiesto de su aplicación. + +
+ ++ De acuerdo con los datos que su aplicación necesita y el modo en que usted guarda estos datos, es posible que tenga que definir reglas específicas para incluir o excluir ciertos archivos o directorios. + El servicio de copias de seguridad automáticas admite la configuración de estas reglas de copias de seguridad a través del uso de un archivo de configuración XML y el manifiesto de la aplicación. + + En el manifiesto de la aplicación, puede especificar un archivo de configuración de esquema de la copia de seguridad, como se muestra en el siguiente ejemplo: + +
+ ++<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + package="com.my.appexample"> + <uses-sdk android:minSdkVersion="MNC"/> + <uses-sdk android:targetSdkVersion="MNC"/> + <app ... + android:fullBackupContent="@xml/mybackupscheme"> + </app> + ... +</manifest> ++ +
+ En este código de ejemplo, el atributo android:fullBackupContent especifica un archivo XML, ubicado en el directorio res/xml/ del proyecto de desarrollo de su aplicación, con el nombre mybackupscheme.xml.
+
+ Este archivo de configuración incluye reglas sobre los archivos para los que se realiza una copia de seguridad.
+ El siguiente código de ejemplo muestra un archivo de configuración que excluye un archivo específico de las copias de seguridad:
+
+
+<?xml version="1.0" encoding="utf-8"?> +<full-backup-content> + <exclude domain="database" path="device_info.db"/> +</full-backup-content> ++ +
+ Este ejemplo de configuración de copia de seguridad solo excluye un archivo específico de base de datos que no se incluirá en la copia de seguridad. + Todos los demás archivos se incluirán en la copia de seguridad. +
+ ++ La configuración del servicio de copias de seguridad le permite especificar qué archivos incluir en la copia de seguridad o excluir de ella. + La sintaxis del archivo de configuración XML de copia de seguridad de datos es la siguiente: +
+ ++<full-backup-content> + <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /> + <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" /> +</full-backup-content> ++ +
+ Los siguientes elementos y atributos le permiten especificar qué archivos incluir de la copia de seguridad o excluir de ella: + +
+ +<include>. Use este elemento si desea especificar un conjunto de recursos para realizar una copia de seguridad, en lugar de hacer que el sistema realice una copia de seguridad de todos los datos de su aplicación de forma predeterminada.
+ Cuando especifica una etiqueta <include>, el sistema realiza una copia de seguridad solo de los recursos que se especifican
+ con este elemento.
+
+ <exclude>. Use este elemento para especificar un conjunto de recursos para excluir de la copia de seguridad.
+ El sistema realizará una copia de seguridad de todos los datos de su aplicación, excepto de los recursos que se especifican con este elemento.
+
+ domain. El tipo de recurso que desea incluir en la copia de seguridad o excluir de esta. Entre los valores válidos que usted puede especificar para este atributo se incluyen los siguientes:
+
+ root. Especifica que el recurso se encuentra en el directorio raíz de la aplicación.
+ file. Corresponde a un recurso del directorio devuelto por el método
+{@link android.content.Context#getFilesDir getFilesDir()}.
+ database. Corresponde a una base de datos devuelta por el método
+{@link android.content.Context#getDatabasePath getDatabasePath()} o mediante el uso de la clase
+{@link android.database.sqlite.SQLiteOpenHelper}.
+ sharedpref. Corresponde a un objeto {@link android.content.SharedPreferences} devuelto por el método {@link android.content.Context#getSharedPreferences getSharedPreferences()}
+.
+
+ external. Especifica que el recurso se encuentra en almacenamiento externo y corresponde a un archivo del directorio devuelto por el método
+{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}.
+
+ path. La ruta de archivo para un recurso que desea incluir en la copia de seguridad o excluir de esta.
+
+
+ Puede optar por impedir que se realicen copias de seguridad automáticas de los datos de su aplicación y, para ello, debe configurar el atributo
+android:allowBackup en false en el elemento de la aplicación de su manifiesto.
+ Esta configuración se ilustra en el siguiente código de ejemplo:
+
+<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + package="com.my.appexample"> + <uses-sdk android:minSdkVersion="MNC"/> + <uses-sdk android:targetSdkVersion="MNC"/> + <app ... + android:allowBackup="false"> + </app> + ... +</manifest> ++ + +
+ Cuando haya creado una configuración de copia de seguridad, debe probarla para garantizar que su aplicación guarde los datos y se pueda restaurar correctamente. + +
+ + ++ Para ayudar a determinar la manera en que la característica de copia de seguridad está analizando su archivo XML, habilite el registro antes de realizar una copia de seguridad de prueba: + +
+ ++$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE ++ +
Para ejecutar manualmente una copia de seguridad, primero debe inicializar Backup Manager llamando al siguiente comando: + +
+ ++$ adb shell bmgr run ++ +
+ Luego, realice una copia de seguridad de su aplicación manualmente utilizando el comando que se indica a continuación y especificando el nombre de paquete para su aplicación como el parámetro <PACKAGE>:
+
+
+$ adb shell bmgr fullbackup <PACKAGE>+ + +
+ Para iniciar una restauración manualmente después de realizar una copia de seguridad de los datos, llame al comando que se indica a continuación y especifique el nombre de paquete para su aplicación como el parámetro <PACKAGE>:
+
+
+$ adb shell bmgr restore <PACKAGE> ++ +
+ Advertencia: Esta acción detiene la aplicación y borra sus datos antes de realizar la operación de restauración. + +
+ ++ Para iniciar el proceso de restauración de su aplicación, desinstale su aplicación y vuelva a instalarla. Los datos de la aplicación se restaurarán automáticamente desde la nube una vez que se complete la instalación. + +
+ + ++ Si tiene algún problema, borre los datos de la copia de seguridad y los metadatos asociados; para hacerlo, desactive y vuelva a activar la copia de seguridad en Settings > Backup, restablezca el dispositivo a la configuración predeterminada de fábrica o llame al siguiente comando: + + +
+ +$ adb shell bmgr wipe <TRANSPORT> <PACKAGE>+ +
+ El valor <TRANSPORT> debe estar precedido por com.google.android.gms.
+ Para obtener una lista de transportes, llame al siguiente comando:
+
$ adb shell bmgr list transports+ +
Los siguientes son problemas conocidos del servicio de copias de seguridad automáticas:
+ ++ El SDK de la versión preliminar de Android M incluye herramientas de desarrollo, archivos de sistema de Android y archivos de biblioteca que lo ayudarán a probar su aplicación y las nuevas API que se incluirán en la próxima versión de la plataforma. + En este documento, se describe la manera de obtener los componentes que se pueden descargar de la versión preliminar para probar su aplicación. + +
+ + ++ El SDK de la versión preliminar se encuentra disponible para descargarlo a través del Administrador de SDK de Android. Para obtener más información sobre cómo descargar y configurar el SDK de la versión preliminar, consulte la sección Configurar el SDK de la versión preliminar. + +
+ + ++ El paquete de descarga de documentación para desarrolladores brinda información detallada de referencia sobre las API y un informe de diferencias de las API para la versión preliminar. +
+ +| Descripción | +Descarga/sumas de comprobación | +
|---|---|
| Versión preliminar de Android M Documentos para desarrolladores |
+ m-preview-1-developer-docs.zip + MD5: b65201b0d35416f5a1b7a071b52854a7 + SHA-1: d47e856aa65e06897e6edd902ad8d2b1f05ac3ec + |
+
| Dispositivo | +Descarga/sumas de comprobación | +
|---|---|
| Nexus 5 (GSM/LTE) "hammerhead" |
+ hammerhead-MPZ44Q-preview-55d76d3a.tgz + MD5: 9e2631b06c6525e401ceaae3677ff320 + SHA-1: 55d76d3a379b18f3363f28d8a462c236ab96fc36 + |
+
| Nexus 6 "shamu" |
+ shamu-MPZ44Q-preview-c1d6506a.tgz + MD5: 307cbf9dab0a38df4ab2639d02be12aa + SHA-1: c1d6506a74094bdb2f4b8677c7fe4967334f9ea8 + |
+
| Nexus 9 "volantis" |
+ volantis-MPZ44Q-preview-d15ad483.tgz + MD5: fae40377fd999d2b09128665c915264d + SHA-1: 7ab05f96093b2cb370b226f65931202714cbc2ca + |
+
| Nexus Player "fugu" |
+ fugu-MPZ44Q-preview-2406ba05.tgz + MD5: 815902141a85cc65e7725f005cad31d5 + SHA-1: 2406ba0598dea1e69110497ac0bc8e16789bc8fb + |
+
+ Si desea utilizar una imagen del dispositivo para realizar pruebas, debe instalarla en un dispositivo compatible. Siga las instrucciones que se ofrecen a continuación para instalar una imagen del sistema: + +
+ ++ Nota: Cuando haya actualizado un dispositivo de desarrollo con la imagen del sistema de la versión preliminar, se actualizará automáticamente con la próxima versión preliminar a través de actualizaciones OTA. + +
+ ++ Si desea desinstalar la versión preliminar y restablecer las especificaciones de fábrica en un dispositivo, visite el sitio developers.google.com/android y descargue la imagen con la que desea actualizar su dispositivo. + + Siga las instrucciones que se describen en esa página para actualizar la imagen en su dispositivo. + +
+ + + + + + + + diff --git a/docs/html-intl/intl/es/preview/features/app-linking.jd b/docs/html-intl/intl/es/preview/features/app-linking.jd new file mode 100644 index 0000000000000..bd635591d3b52 --- /dev/null +++ b/docs/html-intl/intl/es/preview/features/app-linking.jd @@ -0,0 +1,123 @@ +page.title=Vínculos de la aplicación +page.image=images/cards/card-app-linking_2x.png +page.keywords=vínculo de la aplicación, vínculos profundos, intentos +@jd:body + ++ El sistema Android Intent es un mecanismo flexible para permitir a las aplicaciones controlar contenido y solicitudes. + Es posible que múltiples aplicaciones declaren modelos URI coincidentes en sus filtros de intento. Cuando un usuario hace clic en un vínculo web que no tiene un controlador de inicio predeterminado, la plataforma puede mostrar un diálogo para que el usuario seleccione una opción de una lista de aplicaciones que han declarado filtros de intento coincidentes. + + +
+ ++ Android M Developer Preview ofrece soporte para los vínculos de la aplicación, lo que mejora los controles de vínculos existentes al permitir a los desarrolladores de la aplicación asociar una aplicación con un dominio web propio. + Cuando los desarrolladores crean esta asociación, la plataforma puede determinar automáticamente la aplicación predeterminada utilizada para controlar un vínculo web particular y omitir el paso de solicitarles esta información a los usuarios. + + +
+ + ++ Los propietarios de un sitio web deben declarar las asociaciones con las aplicaciones a fin de establecer el vínculo de una aplicación. El propietario del sitio declara la relación con una aplicación al alojar un archivo JSON, denominado {@code statements.json}, en la ubicación conocida del domino: + + +
+ +http://<domain>:<optional port>/.well-known/statements.json+ +
+ Nota: + Durante el período de M Developer Preview, el archivo JSON se verifica vía el protocolo http. Para la versión oficial de la plataforma, el archivo se verifica mediante el protocolo https cifrado. + +
+ ++ Este archivo JSON indica la aplicación Android que se debe utilizar como el controlador predeterminado para las URL de este dominio. + Identifica la aplicación según estos campos: +
+ +keytool -list -v -keystore my-release-key.keystore+
+ El siguiente listado de archivo muestra un ejemplo de los contenidos y del formato de un archivo +{@code statements.json}: +
+ +
+[{
+ "relation": ["delegate_permission/common.handle_all_urls"],
+ "target": {
+ "namespace": "android_app",
+ "package_name": "<package name>",
+ "sha256_cert_fingerprints": ["6C:EC:C5:0E:34:AE....EB:0C:9B"]
+ }
+}]
+
+
+
++ Una aplicación puede solicitar que la plataforma verifique automáticamente cualquier vínculo de aplicación definido por los nombres de host en los elementos de datos de sus filtros de intento, comparando con los archivos {@code statements.json} alojados en los respectivos dominios web. + + Para solicitar la verificación del vínculo de la aplicación, agregue un atributo {@code android:autoVerify} a cada filtro de intento deseado en el manifiesto, como se muestra en el siguiente fragmento de código de manifiesto: + + +
+ ++<activity ...> + <intent-filter android:autoVerify="true"> + <action android:name="android.intent.action.VIEW" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + <data android:scheme="http" android:host="www.android.com" /> + <data android:scheme="https" android:host="www.android.com" /> + </intent-filter> +</activity> ++ +
+ Cuando el atributo {@code android:autoVerify} está presente en un manifiesto de aplicación, la plataforma intenta verificar los vínculos de la aplicación al instalar la aplicación. + Si la plataforma no puede verificar exitosamente los vínculos de la aplicación, la aplicación no se configura como la aplicación preferida para controlar los vínculos web. + La próxima vez que un usuario abra uno de estos vínculos, la plataforma recurrirá a mostrar al usuario un diálogo. + + +
+ ++ Nota: Durante la prueba, existe la posibilidad de un falso positivo si la verificación falla, pero el usuario ha habilitado explícitamente la aplicación para que abra los vínculos compatibles sin preguntar, utilizando la aplicación de Configuraciones del sistema. En este caso, no se muestra el diálogo y el vínculo se dirige directamente a su aplicación, pero solo debido a la configuración del usuario y no porque la verificación se haya realizado correctamente. + + + +
+ + ++ Los usuarios pueden cambiar las configuraciones del vínculo de la aplicación de manera que las URL se controlen como ellos lo prefieran. Puede revisar y gestionar los vínculos de la aplicación en la aplicación de Configuraciones del sistema, en Settings > Apps > App Info > Open by default. + + +
diff --git a/docs/html-intl/intl/es/preview/index.jd b/docs/html-intl/intl/es/preview/index.jd new file mode 100644 index 0000000000000..35b578de157c2 --- /dev/null +++ b/docs/html-intl/intl/es/preview/index.jd @@ -0,0 +1,67 @@ +page.title=Android M Developer Preview +page.tags="preview", +meta.tags="preview, M preview", androidm +fullpage=true +section.landing=true +header.hide=1 +footer.hide=1 +@jd:body + + + ++Para comenzar con la versión preliminar del SDK de Android, debe aceptar los términos y las condiciones que se describen a continuación. +Como se describe a continuación, tenga en cuenta que esta es una versión preliminar del SDK de Android, que está sujeta a cambios y que usted utiliza bajo su cuenta y riesgo. La versión preliminar del SDK de Android no es una versión estable y puede contener errores y defectos que pueden provocar daños graves a sus sistemas informáticos, dispositivos y datos. +
+ ++Este es el Contrato de licencia de la versión preliminar del SDK de Android (el “Contrato de licencia”). +
++ Los siguientes códigos de ejemplo se proporcionan para M Developer Preview. Para descargar los ejemplos en Android Studio, seleccione la opción del menú File > Import Samples. + +
+ ++ Nota: Estos proyectos que se pueden descargar están diseñados para usarlos con Gradle y Android Studio. + +
+ + ++ Android M modifica la manera en que funcionan los permisos del sistema. Los usuarios deben aprobar solicitudes de permiso durante la ejecución, en lugar de durante la instalación. + Este ejemplo muestra cómo solicitar estos permisos. + +
+ + + ++ Este ejemplo muestra cómo usar las credenciales del dispositivo como método de autenticación en su aplicación. +
+ + + ++ Este ejemplo muestra cómo reconocer huellas dactilares registradas para autenticar al usuario en su aplicación. + +
+ + + ++ Android M incorpora la copia de seguridad automática para las configuraciones de la aplicación. Este ejemplo muestra cómo agregar reglas de filtrado en una aplicación para administrar la copia de seguridad de las configuraciones. + +
+ + + +
+ Muestra cómo usar la API Camera2 para capturar imágenes fotográficas RAW y guardarlas como archivos DNG.
+
+
+ Este ejemplo muestra cómo NotificationManager puede indicarle cuántas notificaciones está mostrando actualmente su aplicación.
+
+
+
M Developer Preview SDK se encuentra disponible desde Android SDK Manager. En este documento, se asume que usted está familiarizado con el desarrollo de aplicaciones de Android, como el uso de Android SDK Manager y la creación de proyectos. + + Si no está familiarizado con Android, consulte primero la sección de capacitación Desarrollo de su primera aplicación. + +
+ +La versión preliminar para desarrolladores funciona mejor con Android Studio 1.3, que es una versión preliminar. + Se recomienda que instale la versión preliminar de Android Studio 1.3 para trabajar con el SDK de la versión preliminar. +
+ +Advertencia: La versión preliminar Canary de Android Studio 1.3 aún se encuentra en desarrollo activo. + Si utiliza su equipo de desarrollo principal para probar la versión preliminar para desarrolladores, puede instalar una segunda instancia de Android para realizar las pruebas. + +
+ +Para instalar la versión preliminar de Android Studio 1.3:
+ +En OSX, puede encontrar el panel Appearance & Behavior en la ventana Preferences de Android Studio. + +
+Para añadir los componentes del SDK de la versión preliminar a su entorno de desarrollo:
+ +En OSX, puede encontrar el panel Appearance & Behavior en la ventana Preferences de Android Studio. + +
+Después de completar estos pasos, los componentes de la versión preliminar ya estarán disponibles en su entorno de desarrollo. +
+ + ++ Si desea utilizar las API de la versión preliminar, debe crear o actualizar un proyecto de desarrollo para utilizar los componentes de la versión preliminar. + +
+ + ++ Recomendamos que utilice Android Studio para crear un proyecto con la versión preliminar. Siga los pasos que se describen en Crear un proyecto hasta que llegue a la pantalla Form Factors en el asistente. + + Luego, realice los siguientes pasos para crear un proyecto configurado para la versión preliminar. + +
+ +
+ Para proyectos existentes, debe modificar la configuración del proyecto para habilitar las API de la versión preliminar. En su entorno de desarrollo, abra el archivo
+build.gradle para su módulo y configure estos valores de la siguiente manera:
+
+
compileSdkVersion se configura en 'android-MNC'minSdkVersion se configura en 'MNC'targetSdkVersion se configura en 'MNC'+ Probar una aplicación con la versión preliminar requiere un dispositivo o un dispositivo virtual configurado con la versión preliminar de la plataforma. + Si tiene un dispositivo compatible, puede instalar la plataforma de la versión preliminar para realizar la prueba. + De lo contrario, puede configurar un dispositivo virtual para realizar la prueba. +
+ ++ Si tiene un Nexus 5, Nexus 6, Nexus 9 o Android TV, puede instalar una imagen de sistema de la versión preliminar en estos dispositivos para probar su aplicación. Con la herramienta Android Virtual Device Manager, puede configurar un dispositivo virtual con la versión preliminar de la plataforma desde Android Studio + + + +
+ ++ Importante: El proceso de instalación de una imagen preliminar en un dispositivo elimina todos los datos del dispositivo, por lo que debe hacer una copia de seguridad de los datos antes de instalar una imagen preliminar. + +
+ ++ Con la herramienta Android Virtual Device, puede configurar un dispositivo virtual para la versión preliminar de la plataforma desde Android Studio. + +
+ +Crear un AVD (dispositivo virtual de Android) con AVD Manager:
+ ++ Para obtener más información sobre cómo crear dispositivos virtuales para realizar pruebas, consulte Administración de dispositivos virtuales. +
diff --git a/docs/html-intl/intl/es/preview/support.jd b/docs/html-intl/intl/es/preview/support.jd new file mode 100644 index 0000000000000..85f0f38bbcf1a --- /dev/null +++ b/docs/html-intl/intl/es/preview/support.jd @@ -0,0 +1,67 @@ +page.title=Soporte +page.image=images/cards/card-support_16-9_2x.png + +@jd:body + ++ Si ha encontrado errores o tiene comentarios sobre M Developer Preview, inicie un problema en nuestro seguimiento de problemas. + + +
+ ++ Para obtener soporte adicional, únase a la comunidad M Developer Preview en Google+ para analizar sus experiencias de desarrollo. + + +
+ +
+
M Developer Preview, Revisión 1 (Mayo de 2015)
+
+ Android M Developer Preview le brinda la oportunidad de garantizar que sus aplicaciones funcionen con la próxima versión de la plataforma. + Esta versión preliminar incluye diversas API y cambios en los comportamientos que pueden tener impactos en su aplicación, como se describe en las secciones Información general de la API y Cambios en los comportamientos. + + Al probar su aplicación con la versión preliminar, se debe centrar en algunos cambios específicos del sistema para garantizar que los usuarios disfruten de una buena experiencia. + + +
+ ++ En esta guía, se describen qué y cómo probar las características preliminares con su aplicación. Debe priorizar la prueba de estas características específicas preliminares, puesto que podrían tener un alto impacto en el comportamiento de su aplicación: + + +
+ ++ Para obtener más información sobre cómo configurar dispositivos o dispositivos virtuales con una imagen del sistema de la versión preliminar para realizar pruebas, consulte la sección Configurar el SDK de la versión preliminar. + +
+ + ++ El nuevo modelo de permisos cambia el modo en que el usuario asigna permisos a su aplicación. + En lugar de conceder todos los permisos durante el procedimiento de instalación, su aplicación debe solicitar al usuario los permisos individuales en el tiempo de ejecución. + + Para los usuarios, este comportamiento ofrece más control granular sobre las actividades de cada aplicación, así como un mejor contexto para comprender por qué la aplicación está solicitando un permiso específico. + Los usuarios pueden conceder o revocar los permisos concedidos a una aplicación de forma individual en cualquier momento. + Es muy probable que esta característica de la versión preliminar tenga un impacto en el comportamiento de su aplicación y puede hacer que algunas características de su aplicación no funcionen o funcionen en un estado degradado. + + +
+ ++ Este cambio afecta a todas las aplicaciones que se ejecutan en la nueva plataforma, incluso a aquellas que no tienen como destino la nueva versión de la plataforma. + La plataforma ofrece un comportamiento de compatibilidad limitada para las aplicaciones heredadas, pero usted debe comenzar a planificar ahora la migración de su aplicación al nuevo modelo de permisos, con el objetivo de publicar una versión actualizada de su aplicación cuando se lance la plataforma oficial. + + +
+ + ++ Use los siguientes consejos para pruebas como ayuda para planificar y ejecutar las pruebas de su aplicación con el nuevo comportamiento de permisos. + +
+ +adb shell pm list permissions -d -g+
adb shell pm [grant|revoke] <permission.name> ...+
+ El cambio en los permisos afecta la estructura y el diseño de su aplicación, además de la experiencia del usuario y los flujos que usted proporciona a los usuarios. + Debe evaluar el uso de los permisos actuales de su aplicación y comenzar a planificar los nuevos flujos que desea ofrecer. + La versión oficial de la plataforma proporciona un comportamiento de compatibilidad, pero debe prever la actualización de su aplicación y no depender de estos comportamientos. + + +
+ ++ Identifique los permisos que su aplicación verdaderamente necesita y utiliza, y luego busque las diversas rutas de códigos que utilizan los servicios protegidos por permisos. + Puede realizar esto mediante una combinación de pruebas en la plataforma nueva y análisis de códigos. + Al realizar las pruebas, debe centrarse en incluir permisos de tiempo de ejecución cambiando {@code targetSdkVersion} de la aplicación a la versión preliminar. + Para obtener más información, consulte la sección Configurar el SDK de la versión preliminar. + +
+ ++ Realice pruebas con diversas combinaciones de permisos revocados y agregados, a fin de destacar los flujos del usuario que dependen de permisos. + Cuando una dependencia no sea obvia ni lógica, debe considerar la opción de refactorizar o compartimentar ese flujo para eliminar la dependencia o aclarar por qué se necesita el permiso. + + +
+ ++ Para obtener más información sobre el comportamiento de los permisos de tiempo de ejecución, las pruebas y las mejores prácticas, consulte la página Permisos de la versión preliminar para desarrolladores. + + +
+ + ++ Las características de ahorro de energía de los modos Doze y App Standby limitan la cantidad de procesamiento en segundo plano que puede realizar su aplicación cuando un dispositivo se encuentra en estado inactivo o mientras su aplicación no está en foco. + Entre las restricciones que el sistema puede imponer en las aplicaciones se incluyen el acceso limitado a la red o denegación de acceso, suspensión de las tareas en segundo plano, suspensión de notificaciones, y alarmas y solicitudes de reactivación ignoradas. + + Para garantizar que su aplicación tenga un comportamiento correcto con estas optimizaciones de ahorro de energía, debe probar su aplicación simulando estos estados de bajo consumo. + + +
+ +Para probar el modo Doze con su aplicación, realice lo siguiente:
+ ++$ adb shell dumpsys battery unplug +$ adb shell dumpsys deviceidle step +$ adb shell dumpsys deviceidle -h ++ +
Para probar el modo App Standby con su aplicación, realice lo siguiente:
+ ++$ adb shell am broadcast -a android.os.action.DISCHARGING +$ adb shell am set-idle <packageName> true ++ +
$ adb shell am set-idle <packageName> false+
Si su aplicación continúa teniendo algún identificador específico del dispositivo, como la Id. de registro de Google Cloud Messaging, en el almacenamiento interno, asegúrese de seguir las mejores prácticas para excluir la ubicación de almacenamiento de la copia de seguridad automática, como se describe en la sección Copia de seguridad automática para aplicaciones. + + + +
diff --git a/docs/html-intl/intl/es/preview/testing/performance.jd b/docs/html-intl/intl/es/preview/testing/performance.jd new file mode 100644 index 0000000000000..734697676b973 --- /dev/null +++ b/docs/html-intl/intl/es/preview/testing/performance.jd @@ -0,0 +1,656 @@ +page.title=Prueba de rendimiento de video +page.image=images/cards/card-test-performance_2x.png +page.keywords=rendimiento, fotogramas por segundo, herramientas + +@jd:body + + ++ La prueba de rendimiento de la UI le garantiza que su aplicación no solo cumpla con los requisitos funcionales sino que la interacción del usuario con su aplicación sea fluida y funcione constantemente a 60 fotogramas por segundo (Why 60fps?) sin disminuir o retrasar fotogramas (lo que llamamos “jank”). + + + Este documento explica las herramientas disponibles para medir el rendimiento de la UI y establece un enfoque para integrar las medidas de rendimiento de la UI en sus prácticas de prueba. + + +
+ + ++ Para mejorar el rendimiento, primero necesita poder medir el rendimiento de su sistema y, luego, diagnosticar e identificar los problemas que puedan surgir debido a las varias secciones de su canalización. + + +
+ ++ dumpsys es una herramienta de Android que se ejecuta en el dispositivo y vuelca información útil sobre el estado de los servicios del sistema. + + Al pasar el comando gxinfo a dumsys, se obtiene una salida de logcat con información de rendimiento en relación con los fotogramas de animación que ocurren durante la fase de grabado. + + +
+ ++> adb shell dumpsys gfxinfo <PACKAGE_NAME> ++ +
+ Este comando puede crear múltiples variantes diferentes de datos del intervalo del fotograma. +
+ ++ En la versión preliminar de Android M, el comando emite un análisis adicional a logcat sobre los datos del fotograma. Estos datos se recopilan en toda la duración del proceso. + Por ejemplo: +
+ ++Stats since: 752958278148ns +Total frames rendered: 82189 +Janky frames: 35335 (42.99%) +90th percentile: 34ms +95th percentile: 42ms +99th percentile: 69ms +Number Missed Vsync: 4706 +Number High input latency: 142 +Number Slow UI thread: 17270 +Number Slow bitmap uploads: 1542 +Number Slow draw: 23342 ++ +
+ Estas estadísticas de alto nivel representan, en un nivel avanzado, el rendimiento de representación de la aplicación y su estabilidad en muchos fotogramas. + +
+ + ++ La versión preliminar de Android M ofrece un nuevo comando para gfxinfo, es framestats que brinda información extremadamente detallada sobre el intervalo del fotograma reciente, de manera que usted puede localizar y depurar errores de manera más precisa. + + +
+ ++>adb shell dumpsys gfxinfo <PACKAGE_NAME> framestats ++ +
+ Este comando emite información sobre el intervalo del fotograma, medida en nanosegundos, de los últimos 120 fotogramas que produjo la aplicación. A continuación, se muestra un ejemplo sin formato de adb dumpsys gxinfo <PACKAGE_NAME> framestats: + + +
+ ++0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954, +0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120, +0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527, +0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683, ++ +
+ Cada línea de esta salida representa un fotograma producido por la aplicación. Cada línea tiene un número fijo de columnas que describen el tiempo transcurrido en cada etapa de la canalización de producción de fotogramas. + En la siguiente sección, se describe este formato en detalle y se explica qué representa cada columna. + +
+ + ++ Debido a que el bloque de datos se emite en formato CSV, es muy sencillo pegarlo en su herramienta de hoja de cálculo preferida, o recopilar y redistribuir con un script. + La siguiente tabla explica el formato de las columnas de los datos de salida. + Las marcas de tiempo están en nanosegundos. +
+ ++ Puede utilizar esta información de distintas maneras. Un método de visualización simple pero eficaz es el histograma que muestra la distribución de los tiempos del fotograma (FRAME_COMPLETED - INTENDED_VSYNC) en distintos bloques de latencia; vea la siguiente figura. + + Este gráfico indica brevemente que la mayoría de los fotogramas estuvieron muy bien, es decir, por debajo del límite de 16 ms (marcado en rojo). Sin embargo, algunos fotogramas estuvieron muy por arriba del límite. + + En el histograma, podemos observar los cambios con el correr del tiempo para ver la creación de los cambios totales o los nuevos valores atípicos. + También puede graficar la latencia de entrada, el tiempo dedicado al diseño o cualquier otra medición interesante similar sobre las marcas de tiempo en los datos. + + +
+ +
+
+
+
+ Si, en las Opciones de Desarrollador, Profile GPU rendering se configura en In adb shell dumpsys gfinfo, el comando adb shell dumpsys gfxinfo emite sobre el tiempo de los 120 fotogramas más recientes y los agrupa en algunas categorías diferentes con valores separados por tabulación.
+
+
+ Esta información puede resultar útil para indicar qué partes de la canalización del dibujo podrían funcionar lento en un nivel alto.
+
+
+ Al igual que framestats, es muy sencillo pegar esta información en su herramienta de hoja de cálculo preferida, o recolectar y redistribuir con un script. + + El siguiente gráfico detalla dónde pasaron tiempo muchos de los fotogramas generados por la aplicación. + +
+ +
+
++ El resultado de ejecutar gfxinfo, copiar la salida, pegar en una aplicación de hoja de cálculo y graficar la información en forma de barras apiladas. + +
+ ++ Cada barra vertical representa un fotograma de animación, su altura representa la cantidad de milisegundos que le llevó calcular ese fotograma de animación. + Cada segmento de color de la barra representa una etapa diferente de la canalización de representación, de manera que usted pueda observar qué partes de su aplicación pueden estar creando un cuello de botella. + + Para obtener más información sobre la canalización de representación y cómo optimizarla, consulte el video +Invalidations Layouts and Performance. + +
+ + ++ Los intervalos de framestats y del fotograma simple recopilan datos durante un período muy breve: aproximadamente dos segundos que valen la pena representar. + Para poder controlar este período con precisión, por ejemplo para limitar los datos a una animación en particular, puede restablecer todos los contadores y agregar los datos recopilados. + + +
+ ++>adb shell dumpsys gfxinfo <PACKAGE_NAME> reset ++ +
+ Esto se puede usar junto con los comandos de volcado para recopilar y restablecer a una cadencia normal a fin de capturar continuamente períodos de fotogramas de menos de dos segundos. + + +
+ + ++ La identificación de regresiones es un buen primer paso para localizar los problemas y mantener la aplicación funcionando correctamente. + Sin embargo, dumpsys solo identifica la existencia y la gravedad relativa de los problemas. + Usted todavía debe diagnosticar la causa particular de los problemas de rendimiento y encontrar las soluciones adecuadas. + Para esto, es sumamente recomendable que utilice la herramienta systrace. + +
+ + ++ Para obtener más información sobre el funcionamiento de la canalización de representación de Android, los problemas comunes que puede encontrar y cómo solucionarlos, es posible que algunos de los siguientes recursos le resulten útiles: + + +
+ ++ Un enfoque para realizar la prueba de rendimiento de la UI es solicitar a un evaluador que realice una serie de operaciones de usuario en la aplicación objetivo para identificar visualmente jank, o bien, pasar mucho tiempo utilizando un enfoque basado en alguna herramienta para encontrar jank. + + Sin embargo, este enfoque manual tiene sus riesgos, la habilidad humana para percibir cambios en los índices de los fotogramas varía de manera alarmante. Además, este proceso lleva mucho tiempo, es tedioso y propenso a errores. + + +
+ ++ Un método más eficiente es registrarse y analizar las mediciones de rendimiento clave a partir de pruebas automatizadas de UI. + Android M Developer Preview incluye nuevas capacidades de registro que facilitan la determinación de la cantidad y gravedad de jank en las animaciones de su aplicación y pueden utilizarse para crear un proceso estricto a fin de determinar su rendimiento actual y realizar un seguimiento de futuros objetivos de rendimiento. + + + +
+ ++ Este artículo lo guía a través de un enfoque recomendado para utilizar esa información a fin de automatizar su prueba de rendimiento. + +
+ ++ Esto se divide básicamente en dos acciones clave. Primero, identificar qué está probando y cómo lo prueba. Segundo, configurar y mantener un entorno de prueba automatizado. + + +
+ + ++ Antes de comenzar con las pruebas automatizadas, es importante establecer algunas decisiones de alto nivel para entender correctamente el espacio de prueba y las necesidades que puede tener. + +
+ ++ Recuerde que el usuario visualiza el rendimiento negativo cuando una animación fluida se interrumpe. + Por lo tanto, al identificar qué tipo de acciones de UI desea probar, se recomienda centrarse en aquellas animaciones clave que el usuario ve más o que son más importantes para su experiencia. + + Por ejemplo, a continuación, se mencionan situaciones comunes que es útil identificar: +
+ ++ Trabaje con los ingenieros, diseñadores y gerentes de productos de su equipo a fin de priorizar estas animaciones clave para la cobertura de la prueba. + +
+ ++ Desde un nivel alto, puede ser crítico identificar sus metas de rendimiento específicas y concentrarse en escribir pruebas y recopilar datos sobre ellas. + Por ejemplo: +
+ ++ Para todas estas situaciones, es recomendable realizar un seguimiento que muestre el rendimiento en múltiples versiones de su aplicación. + +
+ ++ El rendimiento de la aplicación varía según el dispositivo en el que se ejecuta. Algunos dispositivos pueden tener menos memoria, GPU menos potentes o CPU más lentos. + Esto significa que las animaciones que funcionan bien en un conjunto de hardware pueden no hacerlo en otros, o peor, pueden provocar un cuello de botella en diferentes secciones de la canalización. + + Por lo tanto, para justificar esta variación en lo que un usuario puede ver, seleccione una serie de dispositivos, tanto de alta gama como de baja, tablets, etc., en los que ejecutará las pruebas. + + Busque variedad en rendimiento de CPU, memoria RAM, resolución de pantalla, tamaño, etc. + Las pruebas exitosas en un dispositivo de alta gama pueden fallar en uno de baja gama. + +
+ ++ Algunos conjuntos de herramientas, como UI Automator y Espresso, están diseñados para ayudar a automatizar el desplazamiento de un usuario por su aplicación. + + Estos son marcos simples que imitan la interacción del usuario con el dispositivo. + Para utilizar estos marcos, debe crear con éxito scripts únicos que se ejecuten en un conjunto de acciones de usuarios y reproducirlos en el dispositivo en sí. + + +
+ +
+ Al combinar estas pruebas automatizadas junto con dumpsys gfxinfo, puede crear rápidamente un sistema reproducible que le permite ejecutar una prueba y medir la información de rendimiento de esa condición particular.
+
+
+
+ Una vez que pueda ejecutar una prueba de UI y una canalización para recopilar datos de una sola prueba, el próximo paso importante es elegir un marco que pueda ejecutar esa prueba muchas veces en múltiples dispositivos y agregar los datos de rendimiento resultantes para que su equipo de desarrollo los analice mejor. + + + +
+ ++ Vale la pena mencionar que los marcos para pruebas de UI (como UI Automator) se ejecutan directamente en el emulador/dispositivo objetivo. + A la recopilación de información de rendimiento realizada por +dumpsys gfxinfo la impulsa un equipo de host que envía comandos por ADB. Para ayudar a unir la automatización de estas entidades separadas, se diseñó el marco MonkeyRunner. Un sistema de scripts que se ejecuta en su equipo de host y que puede emitir comandos a un conjunto de dispositivos conectados y recibir datos de ellos. + + + +
+ ++ Al crear un conjunto de scripts para la automatización adecuada de las pruebas de rendimiento de UI, usted podrá, como mínimo, utilizar MonkeyRunner para realizar con éxito las siguientes tareas: + +
+ ++ Una vez que se identifican los patrones de problemas o las regresiones, el paso siguiente es identificar y aplicar la solución. + Si su marco de pruebas automatizadas preserva detalles precisos del intervalo para los fotogramas, puede ayudarlo a investigar cambios sospechosos de código o diseño (en el caso de una regresión), o delimitar la parte del sistema que está analizando al cambiar a una investigación manual. + + + Para realizar una investigación manual, systrace es un buen lugar para comenzar, ya que muestra información precisa sobre cada etapa de la canalización de representación, cada subproceso y núcleo del sistema, además de cualquier marca de evento personalizada que usted defina. + + +
+ ++ Es importante mencionar las dificultades para obtener y medir los intervalos que son producto del rendimiento de la representación. + Estos números son, por naturaleza, no deterministas y, a menudo, fluctúan según el estado del sistema, la cantidad de memoria disponible, el límite térmico y la última vez que un rayo solar tocó el área de la tierra donde se encuentra. + + El punto es que puede ejecutar la misma prueba dos veces y obtener números apenas diferentes que pueden estar cerca pero no ser iguales. + + +
+ ++ Para recopilar y definir datos correctamente de esta manera, deberá ejecutar la misma prueba muchas veces y acumular los resultados como un promedio o un valor promedio (para que resulte más fácil, lo llamaremos un “lote”). Esto le ofrece una aproximación estimada del rendimiento de la prueba, sin requerir intervalos exactos. + + + +
+ ++ Los lotes se pueden usar entre cambios de código para verificar el impacto relativo que esos cambios tienen en el rendimiento. + Si el índice de fotograma promedio para el lote previo al cambio es que el lote después del cambio, entonces, generalmente está en presencia de un incremento general en relación con el rendimiento para ese cambio particular. + + +
+ ++ Esto significa que cualquier prueba automatizada de UI que lleve a cabo debería tener en cuenta este concepto, además de justificar cualquier anomalía que pudiera surgir durante una prueba. + Por ejemplo, si el rendimiento de su aplicación disminuye repentinamente debido a algún problema con el dispositivo (que no sea provocado por la aplicación), deberá volver a ejecutar el lote para obtener intervalos menos caóticos. + + + +
+ ++ Entonces, ¿cuántas veces debe ejecutar una prueba para que los resultados sean significativos? El mínimo debe ser 10 veces y con números más altos, como 50 o 100, para obtener resultados más precisos (por supuesto, ahora cambia el tiempo por la precisión). + + +