Cómo comprender la seguridad en Android

Mejore la seguridad de las aplicaciones con recintos de seguridad, firmas de la aplicación y permisos

Cuando desarrolla aplicaciones para Android, debe abordar diversos aspectos relacionados con la seguridad, que incluyen procesos de aplicaciones y recintos de seguridad, uso de datos y códigos compartidos, protección del sistema a través de firmas de la aplicación, y uso de permisos. Priorice estos aspectos de seguridad en el desarrollo de una aplicación de Android mientras trabaja con un código de muestra.

C. Enrique Ortiz, Nhà phát triển và tác giả, About Mobility Weblog

C. Enrique Ortiz es un tecnólogo y autor con gran experiencia. Un ex ingeniero en software de transbordadores espaciales que decidió focalizarse en tecnologías móviles más que en trabajar en cohetes peligrosos, asesora a desarrolladores, empresas que recién se inician e inversores sobre cosas móviles: tecnología, estrategia, productos y lanzamientos al mercado.


Nivel de autor contribuyente en developerWorks

04-02-2013

Visión general

Android consiste en una infraestructura de aplicaciones, bibliotecas de aplicaciones y una máquina virtual Dalvik con compilación en tiempo de ejecución, todos funcionando sobre un kernel de Linux®. A través de las ventajas que ofrece el kernel Linux, Android obtiene una serie de servicios de sistemas operativos, entre ellos la gestión de procesos y memoria, una pila de red, controladores, una capa de abstracción de hardware, y en relación con el tema de este artículo, dispositivos de seguridad.

Acrónimos de uso frecuente

  • ADT: Herramientas de desarrollo de Android
  • API: Interfaz de programa de aplicación
  • IDE: Entorno de desarrollo integrado
  • JDK: Kit de desarrollo de Java
  • URI: Identificador universal de recursos
  • XML: Lenguaje de marcado extensible

Prerrequisitos

Para continuar con este artículo, necesita las siguientes habilidades y herramientas:

  • Conocimientos básicos de la tecnología Java™ y cómo utilizar Eclipse (o su IDE favorito)
  • Kit de desarrollo de Java (versión 5 o 6 requerida)
  • Eclipse (versión 3.4 o 3.5)
  • Plug-ins SDK y ADT de Android

Para descargar y configurar la información, consulte la sección Recursos al final de este artículo.


Recintos de seguridad, procesos y permisos

ID de usuario: Linux vs. Android

Mientras que en Linux un ID de usuario permite identificar a un usuario determinado, en Android, un ID de usuario permite identificar una aplicación. La asignación de los ID de usuario se realiza durante la instalación de la aplicación y permanecerán tal como se les asignó durante la vida útil de la aplicación en el dispositivo. Los permisos permiten conceder o restringir el acceso (en lugar de los usuarios) de las aplicaciones a los recursos del dispositivo.

Android utiliza el concepto de recinto de seguridad para ejecutar la separación y permisos de comunicación entre aplicaciones para permitir o denegar el acceso de una aplicación a los recursos del dispositivo, como archivos y directorios, red, sensores y API en general. Para esto, Android utiliza las facilidades de Linux como la seguridad a nivel de procesos, los ID de usuario y grupo que están asociados con la aplicación y los permisos para ejecutar las operaciones que una aplicación tiene permitido realizar.

Conceptualmente, un recinto de seguridad se puede representar como en la Figura 1.

Figura 1. Dos aplicaciones de Android, cada una con sus propios recintos de seguridad o proceso básicos Diagrama:
Diagram: Two Android applications, each on its own basic sandbox or process (with different user IDs)

Las aplicaciones de Android se ejecutan en su propio proceso de Linux y tienen asignadas un ID de usuario único. De manera predeterminada, las aplicaciones se ejecutan dentro de un proceso de recinto de seguridad básico sin permisos asignados, lo que impide así que tales aplicaciones puedan acceder al sistema o a sus recursos. Sin embargo, las aplicaciones de Android pueden solicitar permisos a través del archivo de manifiesto de la aplicación.

Las aplicaciones de Android pueden permitir a otras aplicaciones acceder a sus recursos de la siguiente manera:

  • Declarando los permisos de manifiesto apropiados
  • Ejecutándose en el mismo proceso con otras aplicaciones de confianza, lo que permite compartir de esta manera el acceso a su código y datos

Este último se ilustra en la Figura 2.

Figura 2. Dos aplicaciones de Android ejecutándose en el mismo proceso
Diagram: Two Android applications, running on the same process (with same digital signature and same Linux user ID)

Diferentes aplicaciones pueden ejecutarse en el mismo proceso. Para este enfoque, primero debe firmar esas aplicaciones con la misma clave privada y, a continuación, asignarles el mismo ID de usuario de Linux con el archivo de manifiesto. Para ello, deberá definir el atributo de manifiesto android:sharedUserId con el mismo valor/nombre.


Casos de uso de desarrolladores

La Figura 3 ilustra un número de casos de uso relacionados con la seguridad que se encontraron al desarrollar aplicaciones de Android.

Figura 3. Áreas de seguridad presentes durante la programación de aplicaciones de Android
Diagram: Security areas present when programming Android applications
  • La firma de la aplicación o del código es el proceso de generar claves públicas y privadas y certificados de clave pública, firmando y optimizando la aplicación.
  • Los permisos son un mecanismo de seguridad de la plataforma Android para permitir o denegar el acceso de la aplicación a las API y recursos restringidos. De manera predeterminada, las aplicaciones de Android no tienen permisos otorgados, lo que las hace más seguras al no permitirles obtener acceso a las API o a los recursos protegidos en el dispositivo. Los permisos se deben solicitar, los permisos personalizados se deben definir y los proveedores de contenidos deben estar protegidos. Asegúrese de comprobar, hacer cumplir, otorgar y revocar permisos durante el tiempo de ejecución.

A continuación, observe cada una de las áreas de seguridad en mayor detalle.


Firma de la aplicación

Todas las aplicaciones de Android deben estar firmadas. La firma de la aplicación o del código es el proceso de firmar digitalmente una determinada aplicación mediante una clave privada para:

  • Identificar el autor del código
  • Detectar si la aplicación ha sido modificada
  • Establecer confianza entre las aplicaciones

Basadas en esta relación de confianza, las aplicaciones pueden compartir el código y los datos en forma segura.

Las aplicaciones firmadas que utilizan la misma firma digital pueden otorgar permisos entre una y otra para acceder a las API basadas en firmas, también pueden ejecutarse en el mismo proceso si comparten los mismos ID de usuario, lo que permite a cada una acceder al código y datos de la otra.

La firma de la aplicación comienza mediante la generación de un par de claves, una pública y una privada, y un certificado de clave pública relacionado, también conocido como certificado de clave pública.

Al trabajar con aplicaciones de Android, puede generar aplicaciones en el modo debug y release:

  • Las aplicaciones generadas que utilizan las herramientas de compilación de Android (línea de comando y Eclipse ADT) se firman automáticamente mediante el uso de una clave privada de depuración; estas aplicaciones se denominan aplicaciones de modo de depuración. Las aplicaciones del modo de depuración se utilizan para pruebas y no deben ser distribuidas a terceros. Observe que las aplicaciones sin firmar o las aplicaciones firmadas que utilizan una clave privada de depuración no pueden ser distribuidas en Android Market.
  • Una vez que esté listo para lanzar su aplicación, debe generar una versión de modo de prueba, lo que significa que debe firmar la aplicación con su clave privada.

La firma de código en Android se realiza de una manera mucho más simple que en otras plataformas móviles. En Android, el certificado puede ser autofirmado, es decir, no es necesario una entidad certificadora. Este enfoque simplifica el proceso de publicación y los costos relacionados.

A continuación, desarrollaré cómo firmar aplicaciones de Android manualmente desde la línea de comando y mediante el uso de Eclipse ADT. No utilizaré Ant para desarrollar un tercer enfoque en este artículo.

Cómo crear manualmente las claves pública y privada y el certificado de clave pública.

Recuerde que las aplicaciones de modo de depuración son firmadas automáticamente por las herramientas de compilación que utilizan el certificado/clave de depuración. Para firmar una aplicación de modo de prueba, primero debe generar el par de clave pública y privada y el certificado de clave pública. Puede firmar su aplicación manualmente o mediante el uso de Eclipse ADT. En ambos enfoques, se utilizan la clave de la herramienta keytool del Kit de desarrollador Java (JDK) y la utilidad de gestión de certificados.

Para generar manualmente la información de la clave pública y privada, utilice keytool de la línea de comando, como se muestra en Listado 1.

Listado 1. Uso de la keytool para generar claves privadas y públicas y certificación
 keytool -genkey -v -alias <alias_name> -keystore
                <keystore.name> -keyalg RSA -keysize 2048 -validity <number of days>

NOTA: El Listado 1 asume que JDK está instalado en su computadora y que la ruta JAVA_HOME está definida correctamente para apuntar a su directorio de JDK (consulte Recursos para obtener información sobre descarga y configuración).

En el Listado 1, -genkey indica una entrada del par de claves pública y privada, así como una cadena de certificado de elemento simple autofirmado X.509 v1 que incluye la clave pública generada. -v indica el modo verboso. -alias es el alias para utilizar para la entrada del almacén de claves que almacena la clave privada y el certificado generados. -keystore indica el nombre del almacén de claves para utilizar. -keyalg es el algoritmo a utilizar para generar el par de claves. -keysize es el tamaño de la clave para generar, en la que 1024 es el valor predeterminado pero 2048 es el valor recomendado. Y -validity es el período de validez en días; se recomienda especificar un valor más grande que 1000.

NOTA: Una vez que haya generado sus claves, es muy importante que proteja su clave privada. No comparta la clave privada y no la especifique en la línea de comando o en los scripts; observe que las herramientas keytool and jarsigner le solicitan la contraseña. Para esta y otras sugerencias, consulte "Cómo asegurar su clave privada" en el sitio web de desarrolladores de Android (consulte Recursos para entrar a un enlace).

Keytool le solicitará ingresar su nombre y apellido, organización, ciudad, estado, país para el cual se genera un nombre distinguido X.500 (consulte Recursos para obtener más información), y contraseñas para proteger la clave privada y el almacén de claves.

En cuanto al período de validez, asegúrese de utilizar un período que exceda la vida prevista de la aplicación y las aplicaciones relacionadas. Si publica su aplicación en el Android Market, el período deberá terminar después del 22 de octubre de 2033, de lo contrario, no podrá cargar su aplicación para publicarla. Además, los certificados de larga duración facilitarán su vida cuando actualice sus aplicaciones. Afortunadamente, Android Market impone el uso de certificados de larga duración para ayudarle a evitar tales situaciones.

Cómo firmar manualmente su aplicación

A continuación, firme la aplicación sin firmar con la herramienta jarsigner, que es parte del JDK:

 jarsigner -verbose -keystore <keystore.name>
                <my_application.apk> <alias_name>

En el código anterior, -verbose indica el modo verboso, y -keystore indica el nombre del almacén de datos a utilizar. El siguiente es el nombre de la aplicación (.apk) y el último es el alias a utilizar para la clave privada.

Jarsigner solicita la contraseña para utilizar el almacén de claves y la clave privada.

Las aplicaciones se pueden firmar varias veces y se pueden utilizar varias firmas para hacerlo, y las aplicaciones firmadas con la misma clave privada pueden establecer una relación de confianza entre sí y se pueden ejecutar en el mismo proceso y compartir sus códigos y datos a la vez.

Cómo optimizar manualmente su aplicación

El último paso en el proceso de firma es optimizar la aplicación para que los límites de los datos estén alineados con la memoria en relación con el inicio de un archivo, una técnica que contribuye a mejorar el rendimiento del tiempo de ejecución y la utilización de la memoria. Para alinear la aplicación, utilice zipalign:

 zipalign -v 4 your_project_name-unaligned.apk
                your_project_name.apk

En el código anterior, -v indica la salida verbosa. El número 4 indica que se debe utilizar la alineación de cuatro bytes (utilice siempre la alineación de cuatro bytes). El siguiente argumento es el nombre de archivo de la aplicación firmada de entrada (.apk), la cual debe estar firmada con su clave privada, y el último argumento es el nombre de archivo de salida; si desea modificar una aplicación existente, añada -f.

Cómo verificar manualmente que la aplicación fue firmada

Para verificar que la aplicación fue firmada, utilice Jarsigner, esta vez ignore el distintivo -verify:

 jarsigner -verify -verbose -certs my_application.apk

En el código anterior, -verify indica que se debe verificar la aplicación; -verbose indica el modo verboso; -certs indica que se debe mostrar el campo CN del creador de la clave, y el último argumento es el nombre del paquete de la aplicación de Android que se debe verificar.

NOTA: Si en el CN se lee "Android Debug," esto significa que la aplicación fue firmada con la clave de depuración y no se puede publicar; recuerde que debe utilizar una clave privada si su plan es publicar su aplicación en Android Market.

En esta sección, acaba de ver cómo crear manualmente claves públicas y privadas y cómo firmar y optimizar la aplicación. A continuación, observe cómo utilizar Eclipse ADT para crear automáticamente claves públicas y privadas, y firmar y optimizar la aplicación para usted.


Cómo utilizar Eclipse ADT para crear claves y un certificado, y firmar y optimizar su aplicación

Para generar las claves a través de Eclipse ADT, debe exportar la aplicación. Existen dos métodos para exportar las aplicaciones desde Eclipse:

  • Exportar una versión sin firmar de la aplicación que debe firmar manualmente
  • Exportar una versión firmada de la aplicación, en la que ADT realiza todos los pasos automáticamente

Cómo exportar una aplicación sin firmar

Puede exportar una versión sin firmar de la aplicación que debe firmar manualmente. Es decir, necesita ejecutar manualmente las herramientas keytool (para generar las claves descritas anteriormente) y Jarsigner (para firmar la aplicación) y optimizar la aplicación utilizando la herramienta zipalign como se explicó previamente.

Para exportar una versión sin firmar de la aplicación a través de ADT, haga clic con el botón derecho en el proyecto y seleccione Android Tools>Export Unsigned Application Package (vea la Figura 4).

Figura 4. Cómo exportar una aplicación sin firmar
Screen capture of exporting the unsigned application

Una vez que haya seleccionado la aplicación, el ADT le solicitará especificar el directorio en el cual exportar la aplicación sin firmar. Recuerde que una vez que haya exportado la aplicación, debe firmar y optimizar manualmente la aplicación, como se describió anteriormente.

Cómo exportar una aplicación firmada

Con Eclipse ADT, puede exportar una versión firmada de la aplicación. Si utiliza este enfoque, el ADT le solicitará lo siguiente:

  • La información requerida para utilizar un almacén de claves existente o crear un almacén de claves nuevo y protegido
  • La información necesaria para crear una clave privada protegida
  • La información necesaria para generar un certificado de clave pública

Para exportar una aplicación firmada, haga clic derecho en el proyecto, pero esta vez seleccione el elemento de menú Android Tools->Export Signed Application Package, como se muestra en la Figura 5.

Figura 5. Cómo exportar una aplicación firmada
Screen capture of exporting a signed application

En este punto, se ejecuta el asistente de exportación como en la Figura 6.

Figura 6. Asistente de exportación
Screen capture of the Export Wizard

En la Figura 7, seleccione un almacén de claves o cree uno nuevo y las credenciales que utilizará.

Figura 7. Asistente de exportación: Selección del almacén de claves
Screen capture of Export Wizard: Keystore selection

En la Figura 8, escriba la información para crear la clave privada y el certificado digital.

Figura 8. Asistente de exportación: Cómo crear una clave privada y el certificado digital
Screen capture of Export Wizard: selecting the project to export

En la Figura 9, escriba la ruta y el nombre para el archivo de destino y verifique el período de validez.

Figura 9. Cómo escribir la ruta y el nombre para el archivo de destino
Screen capture of entering the path and name for the destination file

Una vez que haya terminado, tiene una aplicación optimizada y una versión de modo de prueba que puede publicar.

Por otro lado, también puede invocar el asistente de exportación con la herramienta de manifiesto de Android, como en la Figura 10.

Figura 10. Cómo invocar el asistente de exportación con la herramienta de manifiesto de Android
Screen capture of invoking the Export Wizard using the Android Manifest tool

Una vez que las aplicaciones hayan sido firmadas, el siguiente paso que debe realizar es definir en el manifiesto los permisos necesarios para la aplicación. Este proceso se describe a continuación.

Observe que el sitio web de desarrolladores de Android posee muy buena documentación sobre cómo firmar las aplicaciones; la información en este sitio siempre está actualizada a medida que se lanzan las nuevas versiones de la plataforma Android (consulte Recursos para obtener más información).


Uso de permisos

Los permisos son un mecanismo de seguridad de la plataforma Android para permitir o denegar el acceso de la aplicación a las API y recursos restringidos. De manera predeterminada, las aplicaciones de Android no tienen permisos otorgados, lo que las hace más seguras al no permitirles obtener acceso a las API o a los recursos protegidos en el dispositivo. Los permisos son solicitados por la aplicación a través del archivo de manifiesto y son otorgados o denegados por el usuario durante la instalación.

Android define una lista larga de permisos de manifiestos, protegiendo de esta manera varios aspectos del sistema u otras aplicaciones. Para solicitar un permiso, declare un atributo <user-permission> en el archivo de manifiesto:

<uses-permission android:name="string" />

en el que android:name especifica el nombre del permiso.

Para obtener una lista de todos los permisos de manifiestos definidos por Android, consulte la página Manifest.permisson. El Listado 2 es un ejemplo de un archivo de manifiesto que requiere permiso para utilizar Internet y permiso de escritura para un dispositivo de almacenamiento externo:

Listado 2. Cómo declarar (solicitar) un permiso
 <?xml version="1.0"
                encoding="utf-8"?> <manifest
                xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1"
                android:versionName="1.0" package="com.cenriqueortiz.tutorials.datastore"
                android:installLocation="auto"> <application : : : </application>
                <uses-permission android:name="android.permission.INTERNET"/>
                <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
                </manifest>

Las aplicaciones pueden definir sus propios permisos personalizados para proteger los recursos de las aplicaciones. Las otras aplicaciones que deseen acceder a los recursos protegidos de una aplicación deben solicitar los permisos apropiados a través de su propio archivo de manifiesto. El Listado 3 presenta un ejemplo sobre cómo definir los permisos.

Listado 3. Cómo declarar un permiso de cliente
 <permission
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:name="com.cenriqueortiz.android.ACCESS_FRIENDS_LIST"
                android:description="@string/permission_description"
                android:label="@string/permission_label" android:protectionLevel="normal" >
                </permission>

En el Listado 3, un permiso de cliente se define mediante la especificación de los atributos mínimos name, description, label y protectionLevel. Se pueden definir otros atributos pero estos no están incluidos en este artículo.

El atributo android:protectionLevel es de especial interés ya que indica el método que el sistema debe seguir al otorgar (o denegar) un determinado permiso a una aplicación que lo solicite. Los niveles de protección incluyen normal, que otorga permisos automáticamente (aunque el usuario siempre puede revisarlos antes de instalarlos), lo cual permite otorgar permisos basados en la firma (es decir, si la aplicación que lo solicita está firmada con el mismo certificado), y peligroso, que indica que el permiso concede acceso a datos privados o tiene otro impacto potencialmente negativo. Para obtener más información sobre el atributo de manifiesto <permission>, vea la página <permission> (consulte Recursos).

Las aplicaciones pueden restringir el acceso a los componentes de la aplicación y del sistema que utiliza tales como Actividad, Servicio, Proveedor de contenidos y Receptor de difusión. Esta restricción se puede realizar fácilmente mediante la definición del atributo android:permission como en el Listado 4. Este nivel de protección permite que la aplicación autorice o restrinja el acceso de otras aplicaciones a los recursos del sistema.

Listado 4. Cómo definir un permiso para una actividad
 <activity
                android:name=".FriendsListActivity" android:label="Friends List">
                android:permission="com.cenriqueortiz.android.ACCESS_FRIENDS_LIST"
                <intent-filter> : : </intent-filter> </activity>

Proveedores de contenidos y permisos de archivos

Los proveedores de contenido exponen un URI público que identifica exclusivamente sus datos (consulte los Recursos). Para proteger a tales proveedores de contenidos, el interlocutor, cuando inicie o devuelva un resultado de una actividad, puede configurar Intent.FLAG_GRANT_READ_URI_PERMISSION y Intent.FLAG_GRANT_WRITE_URI_PERMISSION para otorgar a la actividad receptora el permiso para acceder al URI de datos específico en el intento.

Los archivos de la aplicación están protegidos de manera predeterminada. Los archivos están protegidos basados en los ID de usuario y, por lo tanto, solo son accesibles para el propietario de la aplicación, que tiene el mismo ID de usuario. Como se mencionó anteriormente, las aplicaciones que comparten el mismo ID de usuario (y están firmadas con el mismo certificado digital) se ejecutan en el mismo proceso y, por lo tanto, comparten el acceso a sus aplicaciones.

Las aplicaciones pueden permitir el acceso de sus archivos a otras aplicaciones o procesos. Este permiso se puede realizar si se indica el modo operativo MODE_WORLD_READABLE y MODE_WORLD_WRITEABLE para permitir el acceso de lectura o grabación del archivo, o MODE_PRIVATE para abrir el archivo en el modo privado. Puede especificar un modo operativo con los siguientes métodos al crear o abrir archivos:

  • getSharedPreferences(filename, operatingMode)
  • openFileOutput(filename, operatingMode)
  • openOrCreateDatabase(filename, operatingMode, SQLiteDatabase.CursorFactory)

Permiso API de tiempo de ejecución

Android proporciona API para comprobar, hacer cumplir, otorgar y revocar permisos durante el tiempo de ejecución. Estas API son parte de la clase android.content.Context, la cual proporciona información global sobre el entorno de la aplicación. Por ejemplo, si desea manipular permisos correctamente, puede determinar si a su aplicación se le otorgó acceso a Internet (vea el Listado 5).

Listado 5. Cómo usar un permiso API para revisar los permisos durante el tiempo de ejecución
 if
                (context.checkCallingOrSelfPermission(Manifest.permission.INTERNET) !=
                PackageManager.PERMISSION_GRANTED) { // The Application requires permission to
                access the // Internet"); } else { // OK to access the Internet }

Para obtener información sobre otras API de permiso para comprobar, hacer cumplir, otorgar y revocar permisos durante el tiempo de ejecución, vea la clase de contexto.


Conclusión

Este artículo presentó una introducción sobre los niveles de seguridad en la plataforma Android que incluyen recintos de seguridad, firma de las aplicaciones, permisos de las aplicaciones, y permisos de archivos y proveedores de contenidos. Después de esta introducción, puede crear certificados digitales manualmente y a través de Eclipse, solicitar permisos de aplicaciones, y permitir o no permitir que las aplicaciones accedan a archivos y proveedores de contenidos determinados. Además, se presentó brevemente las API de tiempo de ejecución de permisos, que le permiten comprobar, hacer cumplir, otorgar y revocar permisos durante el tiempo de ejecución.

Recursos

Aprender

  • ¿Qué es Android?: Lea la visión general en el sitio web de los Desarrolladores de Android.
  • Develop Android applications with Eclipse (Frank Ableson, developerWorks, febrero del 2008): Aprenda todo sobre la manera más fácil para desarrollar aplicaciones de Android con Eclipse en este tutorial.
  • Introduction to Android Development (Frank Ableson, developerWorks, mayo del 2009): Obtenga una introducción a la plataforma Android y aprenda cómo codificar una aplicación de Android básica.
  • X.509 Certificates: Lea el estándar X.509 que define qué información puede ir en un certificado y describe cómo escribirlo (el formato de datos).
  • Extended permissions: Solicite permisos extendidos para su aplicación si necesita acceder a otras partes del perfil del usuario que puedan ser privadas, o si necesita publicar contenido en Facebook de parte de un usuario.
  • Securing Your Private Key: Aprenda cómo mantener la seguridad de su clave privada en el sitio web de desarrolladores Android.
  • Signing Your Applications: Lea sobre cómo firmar sus aplicaciones de Android antes de publicarlas para usuarios de dispositivos móviles del sitio web de desarrolladores de Android.
  • Manifest.permission page: Para obtener una lista de todos los permisos de manifiestos definidos por Android, visite el sitio web de desarrolladores de Android.
  • Content Providers: Aprenda cómo almacenar y recuperar datos, y hacer que estos sean accesibles para todas las aplicaciones.
  • Context class: Permite el acceso a las clases y recursos específicos de la aplicación con esta interfaz a la información global descrita en el sitio de desarrolladores de Android.
  • Networking with Android (Frank Ableson, developerWorks, junio de 2009): Explore las capacidades de conexiones a redes de Android.
  • Working with XML on Android (Michael Galpin, developerWorks, junio de 2009): Aprenda sobre las diferentes opciones para trabajar con XML en Android y cómo utilizarlas para desarrollar sus propias aplicaciones de Android.
  • Under the Hood of Native Web Apps for Android: Aprenda sobre las aplicaciones híbridas en Android.
  • Unlocking Android (Frank Ableson, Manning Publications, 2010): Abarca todos los aspectos del desarrollo de Android en este libro.
  • Mobile Design and Development (Brian Fling, O'Reilly Media, 2009): Lea sobre pautas, estándares y técnicas prácticas y las mejores prácticas para desarrollar productos móviles en este libro.
  • Lea Data Storage Dev Guide: Escoja la solución correcta para guardar datos de una aplicación persistente entre las opciones en el sitio web de desarrolladores de Android.
  • Intents: Conozca a través de este resumen la descripción de una operación que se debe realizar desde el sitio del desarrollador de Android.
  • Documentación sobre Android SDK: Obtenga la última información en la referencia de API de Android.
  • The Open Handset Alliance: Visite al patrocinador de Android.
  • XML area on developerWorks: Obtenga los recursos que necesita para incrementar sus habilidades en el área XML.
  • My developerWorks: Personalice su experiencia developerWorks.
  • Certificación IBM XML: Descubra cómo es posible convertirse en un Desarrollador certificado IBM en XML y tecnologías relacionadas.
  • Biblioteca técnica XML: Visite la Zona XML de developerWorks para una gran variedad de artículos técnicos y sugerencias, tutoriales, estándares e IBM Redbooks. Además, lea más sugerencias XML.
  • Eventos técnicos y webcasts de developerWorks Manténgase actualizado con la tecnología en estas sesiones.
  • developerWorks en Twitter: Únase hoy para seguir los tweets de developerWorks.
  • Podcasts de developerWorks: Escuche entrevistas y debates interesantes para desarrolladores de software.
  • Demos de developerWorks a pedido: Vea demos que varían desde instalación y programación para principiantes hasta funcionalidad avanzada para desarrolladores experimentados.

Obtener los productos y tecnologías

  • La página <permission>: Obtenga más información sobre la página de manifiesto <permission>.
  • keytool: Pruebe esta herramienta de gestión de claves y certificados.
  • jarsigner: Obtenga esta herramienta de firma y verificación de JAR para generar firmas para archivos Java ARchive (JAR) y verificar las firmas de los archivos JAR firmados.
  • Android SDK: Descargue el SDK, acceda a la referencia de API y obtenga las noticias más recientes sobre Android desde el sitio oficial de desarrolladores de Android. Funcionará con las versiones 1.5 y posteriores.
  • Android Open Source Project: Encuentre la información sobre fuentes abiertas y el código de origen que necesita para desarrollar un dispositivo compatible con Android.
  • JDK 6 Update 21: Obtenga la edición estándar de la plataforma Java.
  • Eclipse: Obtenga la versión más reciente de Eclipse IDE.
  • Versiones de evaluación del producto IBM: Descargue o explore las versiones de prueba online en el IBM SOA Sandbox y obtenga herramientas de desarrollo de aplicaciones y productos middleware DB2®, Lotus®, Rational®, Tivoli® y WebSphere®.

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Desarrollo móvil, Industries
ArticleID=963351
ArticleTitle=Cómo comprender la seguridad en Android
publish-date=02042013