Empaquetado de aplicaciones móviles Android

28 de febrero de 2018

En este artículo se describe cómo empaquetan aplicaciones de empresa los administradores de XenMobile y cómo empaquetan aplicaciones ISV los desarrolladores de software independientes. Para empaquetar aplicaciones móviles Android, use el MDX Toolkit, que incluye una herramienta de interfaz gráfica de macOS y una herramienta de línea de comandos de Java. La herramienta de línea de comandos ofrece opciones de personalización, puede remitir a scripts que automatizan el proceso del empaquetado de aplicaciones y permite predefinir los parámetros de algunas directivas MDX.

El tipo de archivo de una aplicación empaquetada es .mdx. El archivo .mdx se carga en la consola de XenMobile, que permite configurar datos concretos de las aplicaciones y definir los parámetros directiva que aplicará luego la tienda XenMobile Store. Cuando los usuarios inician sesión, la aplicación aparece en XenMobile Store. Por tanto, los usuarios pueden suscribirse, descargarla e instalarla en su dispositivo.

La siguiente imagen ofrece una visión general de los pasos necesarios para empaquetar una aplicación, desde la instalación del MDX Toolkit hasta la realización de pruebas de XenMobile Apps. Los temas relacionados se muestran bajo el diagrama.

Flujo de empaquetado de aplicaciones para Android

Para detalles sobre el número uno, consulte:

Para detalles sobre el número dos, consulte:

Importante:

Compruebe que los dispositivos de los usuarios están actualizados a la versión de Secure Hub que es compatible con la versión del MDX Toolkit utilizado para empaquetar las aplicaciones. De lo contrario, los usuarios verán un mensaje de error donde se indica que hay una incompatibilidad. Para obtener más información, consulte Compatibilidad de XenMobile.

Empaquetado de aplicaciones ISV mediante interfaz gráfica

En los siguientes pasos se indica el proceso general para empaquetar una aplicación ISV que se implementará desde la tienda Google Play. El proceso general para el empaquetado de aplicaciones de empresa se describe en Empaquetado de aplicaciones de empresa mediante interfaz gráfica.

  1. Para utilizar el MDX Toolkit para empaquetar aplicaciones, no olvide realizar una copia de la versión original de esas aplicaciones, de modo que pueda volver a ellas si fuera necesario.

  2. Inicie el MDX Toolkit desde la carpeta de aplicaciones iOS, seleccione For Independent Software Vendors (ISVs) y, a continuación, haga clic en Next.

    Imagen del asistente de MDX Toolkit

  3. En la pantalla Deploy from App Store, seleccione la aplicación y haga clic en Next.

  4. En la pantalla User Settings, introduzca la URL de la tienda de aplicaciones si ya dispone de ella. Si no tiene la URL, introduzca un marcador de posición como https://play.google.com/store/apps/details?id=com.xenmobile. Podrá actualizar la dirección URL más adelante.

    Para las aplicaciones Premium, seleccione MDX Apps. Para las aplicaciones General, seleccione App Store apps.

    Imagen de la pantalla de configuración de usuario de MDX Toolkit

  5. En la pantalla Verify App Details, actualice los datos según sea necesario.

  6. Vaya al almacén de claves y haga clic en Create.

    Imagen de la opción de URL de tienda de aplicaciones de MDX Toolkit

  7. Guarde la aplicación.

    Imagen de la opción Guardar de MDX

    Cuando la herramienta termine el empaquetado de la aplicación, el nombre del archivo de la aplicación contendrá _andr.

Empaquetado de aplicaciones Android de empresa mediante línea de comandos

Puede utilizar el empaquetado de aplicaciones de empresa para empaquetar aplicaciones personalizadas (desarrolladas internamente) y algunas aplicaciones de terceros. En cuanto a las aplicaciones de terceros, deberá adquirirlas directamente del proveedor de estas. Para empaquetar aplicaciones de empresa, comience con una aplicación Android (.apk). Antes de utilizar el MDX Toolkit para empaquetar aplicaciones, realice una copia de la versión original de esas aplicaciones, de modo que pueda volver a ellas si fuera necesario.

En el siguiente ejemplo se muestra un comando básico para el empaquetado de aplicaciones que se realiza con la configuración predeterminada. La aplicación se firma con el almacén de claves facilitado. Un almacén de claves es un archivo que contiene certificados usados para firmar las aplicaciones Android. Si el almacén de claves contiene varias claves privadas, puede especificar un alias para la clave relevante. El almacén de claves se crea una vez. A continuación, puede usar el almacén de claves para firmar las aplicaciones que empaquete. Si no usa el mismo almacén de claves para empaquetar la nueva versión de una aplicación ya implementada, las actualizaciones de esa aplicación no funcionarán. Los usuarios deberán eliminar manualmente la versión anterior para poder instalarse la nueva.

Modifique la información representada en negrita para adaptarla a su sistema concreto. La barra diagonal inversa representada al final significa que el comando continúa en la siguiente línea. Quite esos símbolos antes de ejecutar el comando.

Nota:

Como /Applications/ es un directorio restringido, es posible que deba ejecutar el siguiente comando en el modo de superusuario. Para ello, agregue sudo delante del comando. Se solicitará la contraseña del equipo cuando se ejecuta desde este directorio restringido.

java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \
wrap \
-in ~/Desktop/SampleApps/Sample.apk \
-out ~/Desktop/SampleApps/Sample.mdx \
-keystore ~/Desktop/MyCompany.keystore \
-storepass MyKeystorePassword \
-keyalias MyCompanyKeyAlias \
-keypass MyKeyAliasPassword

A continuación se presentan ejemplos de opciones que puede agregar al comando anterior, después de modificar la información en negrita:

  • -appName “Aplicación empaquetada de muestra”
  • -appDesc “Esta es mi aplicación Android recién empaquetada”.

Además, si el almacén de claves de la versión no está disponible durante el desarrollo, utilice el siguiente comando para crear una compilación comercial de la aplicación móvil que está firmada con la clave:

java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \
wrap \
-in ~/Desktop/SampleApps/Sample.apk \
-out ~/Desktop/SampleApps/Sample.mdx \
-keystore ~/Desktop/MyCompany.keystore \
-storepass MyKeystorePassword \
-keyalias MyCompanyKeyAlias \
-keypass MyKeyAliasPassword \
-createCert

Para obtener más información acerca de las opciones, consulte Opciones de comandos. Para obtener documentación en línea, use la opción –help.

Empaquetado de aplicaciones ISV Android mediante línea de comandos

Para utilizar el MDX Toolkit para empaquetar aplicaciones, no olvide realizar una copia de la versión original de esas aplicaciones, de modo que pueda volver a ellas si fuera necesario. Para generar aplicaciones ISV empaquetadas para Android, comience con el siguiente comando básico de empaquetado.

java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \
wrap \
-in ~/Desktop/SampleApps/Sample.apk \
-out ~/Desktop/SampleApps/Sample.mdx \
-keystore ~/Desktop/MyCompany.keystore \
-storepass MyKeystorePassword \
-keyalias MyCompanyKeyAlias \
-keypass MyKeyAliasPassword \
-createCert

Para empaquetar una aplicación como aplicación de fabricante de software independiente (ISV), debe establecer el parámetro -apptype de la siguiente manera:

  • Premium: Para empaquetar una aplicación como Premium (donde algunas directivas Citrix se aplican incluso en dispositivos de usuarios no administrados), agregue la opción -apptype Premium
  • General: Para empaquetar una aplicación como General (donde no se aplican directivas a usuarios no administrados), agregue la opción -apptype General

Si necesita cargar el archivo .apk empaquetado en Google Play Store o en un servidor Web y ya dispone de la URL, agregue la opción -storeURL. Asegúrese de definir también el parámetro apptype.

-storeURL "https://play.google.com/store/apps/details?id=com.zenprise"

Si no conoce la URL en el momento de empaquetar, puede modificar el archivo MDX más tarde con el siguiente comando:

java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \
setinfo \
-in ~/Desktop/SampleApps/Sample.mdx \
-out ~/Desktop/SampleApps/wrapped/Sample.mdx \
-storeURL \
“https://play.google.com/store/apps/details?id=com.zenprise”

Si personalizó el archivo de directiva, debe modificarlo para que apunte al archivo modificado:

-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml Para obtener más información acerca de las opciones, consulte Opciones de comandos. Para obtener documentación en línea, use la opción –help.

Opciones de comandos

comando wrap

  • Help: Muestra la documentación de ayuda del comando.
  • In: Obligatorio. Ruta y nombre del archivo de la aplicación que se empaqueta.
  • Out: Optativo. Ruta y nombre para el archivo .mdx resultante. Si se omite esta opción, el archivo tendrá el mismo nombre y la misma ruta que el archivo de entrada y tendrá la extensión .mdx.
  • AppType: Optativo. El valor predeterminado es MDXOnly. Para generar aplicaciones de ISV, use General o Premium.
  • KeyStore: Ruta al archivo del almacén de claves. Necesario si se firma el archivo APK.
  • StorePass: Contraseña del almacén de claves. Necesario si se firma el archivo APK.
  • KeyAlias: Nombre de la clave específica que se encuentra en el almacén de claves. Necesario si se firma el archivo APK.
  • KeyPass: Contraseña de la clave específica. Necesario si se firma el archivo APK.
  • SigAlg: Optativo. Algoritmo que se utilizará para firmar.
  • AppName: Optativo. Nombre de la aplicación obtenido de la aplicación, si es posible.
  • AppDesc: Optativo. Descripción de la aplicación obtenido de la aplicación, si es posible.
  • MinPlatform: Optativo. Nivel mínimo respaldado de SDK. El valor predeterminado está vacío.
  • MaxPlatform: Optativo. Nivel máximo respaldado de SDK. El valor predeterminado está vacío.
  • ExcludedDevices: Optativo. Lista de los tipos de dispositivo en que la aplicación no tiene permiso para ejecutarse. El valor predeterminado está vacío.
  • PolicyXML: Optativo. Ruta y archivo de definición de directivas XML de sustitución. El valor predeterminado son las definiciones integradas de las directivas. Ejemplo:

    -policyxml/Applications/Citrix/MDXToolkit/data/policy_metadata.xml

    Para obtener más información, consulte más adelante la sección de Preconfiguración de directivas MDX para aplicaciones Android.

  • StoreURL: Para aplicaciones ISV, la dirección URL de la aplicación en la tienda Google Play. El valor predeterminado está vacío.

comando sign

  • Help: Muestra la documentación de ayuda del comando.
  • In: Obligatorio. Ruta y nombre del archivo de la aplicación que se empaqueta.
  • Out: Optativo. Ruta y nombre para el archivo .mdx resultante. Si se omite esta opción, el archivo tendrá el mismo nombre y la misma ruta que el archivo de entrada y tendrá la extensión .mdx.
  • KeyStore: Obligatorio. Ruta al archivo del almacén de claves.
  • StorePass: Obligatorio. Contraseña para el almacén de claves.
  • KeyAlias: Obligatorio. Nombre de la clave específica que se encuentra en el almacén de claves.
  • KeyPass: Obligatorio. Contraseña de la clave específica.
  • SigAlg: Optativo. Algoritmo que se utilizará para firmar.

comando setinfo

  • Help: Muestra la documentación de ayuda del comando.
  • In: Obligatorio. Ruta y nombre de la aplicación que se modificará.
  • Out: Para setinfo, la ruta o el nombre del archivo de salida deben diferir del original.
  • AppType: Optativo. El valor predeterminado es MDXOnly. Para generar aplicaciones de ISV, use General o Premium.
  • KeyStore: Ruta al archivo del almacén de claves. Necesario si se firma el archivo APK.
  • StorePass: Contraseña del almacén de claves. Necesario si se firma el archivo APK.
  • KeyAlias: Nombre de la clave específica que se encuentra en el almacén de claves. Necesario si se firma el archivo APK.
  • KeyPass: Contraseña de la clave específica. Necesario si se firma el archivo APK.
  • SigAlg: Optativo. Algoritmo que se utilizará para firmar.
  • AppName: Optativo. Nombre de la aplicación obtenido de la aplicación, si es posible.
  • AppDes: Optativo. Descripción de la aplicación obtenido de la aplicación, si es posible.
  • MinPlatform: Optativo. Nivel mínimo respaldado de SDK. El valor predeterminado está vacío.
  • MaxPlatform: Optativo. Nivel máximo respaldado de SDK. El valor predeterminado está vacío.
  • ExcludedDevices: Optativo. Lista de los tipos de dispositivo en que la aplicación no tiene permiso para ejecutarse. El valor predeterminado está vacío.
  • StoreURL: Para aplicaciones ISV, la dirección URL de la aplicación en la tienda Google Play. El valor predeterminado está vacío.
  • PolicyXML: Optativo. Ruta y archivo de definición de directivas XML de sustitución. El valor predeterminado son las definiciones integradas de las directivas. Ejemplo:

    -policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml

    Para obtener más información, consulte más adelante la sección de Preconfiguración de directivas MDX para aplicaciones Android.

Preconfiguración de directivas MDX para aplicaciones Android

Para las aplicaciones que se empaquetan con la herramienta de línea de comandos de MDX Toolkit, puede preconfigurar algunas directivas MDX. Asimismo, puede configurar las directivas desde la consola de XenMobile cuando agregue las aplicaciones.

  1. Actualice los valores de directiva en el archivo XML de directiva.

    El instalador del MDX Toolkit crea este archivo de directivas: Applications/Citrix/MDXToolkit/data/policy_metadata.xml

    Nota:

    Tenga en cuenta que los archivos de directivas para Android son diferentes de los archivos de directivas para iOS. Si quiere preconfigurar directivas para ambas plataformas, debe actualizar sus archivos XML de directiva correspondientes.

  2. Cuando empaquete la aplicación con la línea de comandos, incluya

    -policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml

Identificación de errores en el empaquetado de aplicaciones Android

Si se produce un error al empaquetar una aplicación Android, puede usar los registros del MDX Toolkit para identificarlo. Debe tener privilegios de administrador para ver los registros del MDX Toolkit.

Cuando ejecuta el MDX Toolkit, la herramienta guarda automáticamente un archivo de registro en la siguiente ubicación: Applications/CitrixMDXToolkit/Logs/Citrix.log. De forma predeterminada, la herramienta guarda las advertencias y los errores en el registro.

Recopilación de registros de aplicación desde la línea de comandos

  1. Instale Android Debug Bridge desde el sitio Web de desarrolladores de Android.
  2. Escriba el comando siguiente para borrar los registros existentes: “adb logcat -c”
  3. Reproduzca el problema.
  4. Escriba el comando siguiente para capturar los registros en un archivo: adb logcat -d > Name_of_Log_File.txt