Compatibilidad con IPA en Xamarin.iOS

En este artículo se explica cómo crear un archivo IPA que pueda utilizarse para implementar una aplicación mediante la distribución ad hoc para realizar pruebas o para la distribución de aplicaciones internas en la empresa.

Además de para publicar una aplicación para su venta a través del App Store de iTunes, se puede implementar para los usos siguientes:

  • Pruebas ad hoc: una aplicación de iOS se puede implementar para un máximo de 100 usuarios, identificados por el UUID del dispositivo iOS específico, para pruebas alfa y beta. Consulte nuestra documentación Provisioning an iOS Device for Development (Aprovisionamiento de un dispositivo iOS para el desarrollo) para obtener información detallada sobre cómo agregar dispositivos iOS de prueba a su cuenta de desarrollador de Apple y la guía Ad hoc para obtener más información sobre cómo realizar la distribución de este modo.
  • Implementación interna o Enterprise: una aplicación iOS se puede implementar internamente, dentro de una empresa, lo que requiere la pertenencia al programa developer Enterprise Apple. Obtenga más información sobre la distribución interna en la guía Distribución interna.

En cualquier caso, un paquete IPA (un tipo especial de archivo .zip) se puede crear y firmar digitalmente con el perfil de aprovisionamiento de distribución correcto. En este artículo se describen los pasos necesarios para crear el paquete IPA e instalarlo en un dispositivo iOS mediante iTunes en Mac o un PC de Windows.

Archivo iTunesMetadata.plist

Cuando se crea una aplicación de iOS en iTune Connect, ya sea para su venta o su distribución gratuita a través del App Store de iTunes , el desarrollador puede especificar cierta información, como el género, el subgénero, el aviso sobre derechos de autor, los dispositivos iOS compatibles y los requisitos del dispositivo.

Las aplicaciones de iOS que se ofrecen a través de la distribución ad hoc o interna deben admitir esta información de alguna manera, de tal forma que pueda ser visible en iTunes y en el dispositivo del usuario. De forma predeterminada, se crea un archivo pequeño de iTunesMetadata.plist cada vez que se compila el proyecto y, a su vez, se almacena en el directorio del proyecto.

También se puede crear un archivo iTunesMetadata.plist personalizado para proporcionar información adicional de una distribución. Para obtener más información sobre el contenido de este archivo y sobre cómo crearlo, consulte nuestra documentación sobre The iTunesMetadata.plist Contents (Contenidos de iTunesMetadata.plist) y Creating an iTunesMetadata.plist File (Creación de un archivo iTunesMetadata.plist).

Ilustraciones de iTunes

Si la aplicación se ofrece a través de otros medios que no sean la App Store, es necesario incluir una imagen de 512 x 512 y otra de 1024 x 1024 para representar la aplicación en iTunes.

Para especificar las ilustraciones de iTunes, haga lo siguiente:

  1. Haga doble clic en el archivo Info.plist, en el Explorador de soluciones, para abrirlo para su edición.
  2. Desplácese hasta la sección Ilustraciones de iTunes del editor.
  3. En caso de que falte alguna imagen, haga clic en la miniatura que encontrará en el editor, seleccione el archivo de imagen deseado de las ilustraciones de iTunes en el cuadro de diálogo Open File (Abrir archivo) y haga clic en el botón OK (Aceptar) o bien Open (Abrir) .
  4. Repita este paso hasta que se hayan especificado todas las imágenes necesarias para su aplicación.

Para obtener más información, consulte la documentación de iTunes Artwork (Ilustraciones de iTunes).

Creación de un IPA

La creación de un IPA ahora está integrada en el nuevo flujo de trabajo de publicación. Para ello, siga las instrucciones siguientes para archivar la aplicación, firmarla y guardar su IPA.

Antes de empezar a crear un IPA para una solución multiplataforma, asegúrese de haber seleccionado el proyecto de iOS como proyecto de inicio:

Proyecto de iOS seleccionado como proyecto de inicio

Compilar el archivo

Para crear un IPA, es necesario crear un archivo de una compilación de versión de nuestra aplicación. Este archivo contiene nuestra aplicación y la información que la identifica.

  1. Seleccione la versión | Configuración del dispositivo en Visual Studio para Mac: !

    Selección de la configuración Versión | Dispositivo

  2. En el menú Compilación, seleccione Archivo para publicar:

    Selección de Archivo para publicar

  3. Una vez creado el archivo, se mostrará la vista Archives (Archivos) :

    Se mostrará la vista Archivos

Firmar y distribuir la aplicación

Cada vez que se compila la aplicación para el archivo, se abre automáticamente la Archives View (Vista de archivos) , que muestra todos los proyectos archivados, agrupados por solución. De forma predeterminada, esta vista solo muestra la solución abierta actual. Para ver todas las soluciones que tienen archivos, haga clic en la opción Show all archives (Mostrar todos los archivos) .

Se recomienda mantener los archivos que se implementen en los clientes, ya sean implementaciones ad hoc o internas para que cualquier información de depuración generada pueda considerarse como perteneciente a una fecha posterior.

Tenga en cuenta que, en el caso de las compilaciones que no pertenecen a la App Store, el archivo iTunesMetadata.plist, así como las ilustraciones definidas para iTunes, se incluirán automáticamente en su IPA, si están presentes en el archivo.

Para firmar la aplicación y prepararla para la distribución:

  1. Seleccione el botón Sign and Distribute... (Firmar y distribuir...) que se muestra a continuación:

    Selección de Firmar y distribuir...

  2. De este modo, se abrirá el asistente para publicación. Seleccione el canal de distribución Ad-Hoc (Ad hoc) o Enterprise (Empresa) interno para crear un paquete:

    Selección de la distribución interna Ad hoc o Empresa

  3. En la pantalla del perfil de aprovisionamiento, seleccione su identidad de firma y el perfil de aprovisionamiento correspondiente o vuelva a iniciar sesión con otra identidad:

    Selección de la identidad de firma y el perfil de aprovisionamiento correspondiente

  4. Compruebe los detalles del paquete y haga clic en Publish (Publicar) :

    Comprobación de los detalles del paquete

  5. Por último, guarde su IPA en el equipo:

    Guardado del IPA en el equipo

Compilación a través de la línea de comandos (Mac)

En algunos casos, como en un entorno de integración continua (CI), será necesario compilar su IPA a través de la línea de comandos. Para ello, siga los pasos indicados a continuación:

  1. Asegúrese Project opciones de IPA de iOS: Incluir imágenes de > iTunesArtwork está activada y la opción Compilar > está activada:

    Opciones Incluir imágenes de iTunesArtwork y Compilar paquete ad-hoc/enterprise (IPA) activadas

    Si lo prefiere, puede editar el archivo .csproj en un editor de texto y agregar manualmente las dos propiedades correspondientes a para la configuración que se usará para compilar la aplicación:

    <BuildIpa>true</BuildIpa>
    <IpaIncludeArtwork>false</IpaIncludeArtwork>
    
  2. Si incluye un archivo opcional iTunesMetadata.plist, haga clic en el botón ... , selecciónelo en la lista y haga clic en el botón OK (Aceptar) :

    Selección de iTunesMetadata.plist en la lista

  3. Llame a msbuild directamente y pase esta propiedad a la línea de comandos:

    /Library/Frameworks/Mono.framework/Commands/msbuild YourSolution.sln /p:Configuration=Ad-Hoc /p:Platform=iPhone /p:BuildIpa=true
    

Personalización de la ubicación del IPA

Se ha MSBuild nueva propiedad para facilitar la personalización de la ubicación de salida del archivo .ipa. Si se establece en una ubicación personalizada, el archivo .ipa se colocará en esa ubicación en lugar del subdirectorio con marca de tiempo IpaPackageDir predeterminado. IpaPackageDir Esto puede ser útil durante la creación automatizada de compilaciones que se basan en una ruta de acceso del directorio específica para funcionar correctamente, como las que se usan para las compilaciones de integración continua (CI).

Hay varias formas de utilizar la nueva propiedad:

Por ejemplo, para generar el archivo .ipa en el directorio predeterminado anterior (como en Xamarin.iOS 9.6 y versiones anteriores), puede establecer la propiedad en mediante uno de los enfoques $(OutputPath) siguientes. Ambos enfoques son compatibles con todas las compilaciones de Xamarin.iOS de Unified API, incluidas las compilaciones de lIDE, así como las de la línea de comandos en las que se usa xbuild, msbuild o mdtool:

  • La primera opción es establecer la IpaPackageDir propiedad dentro de un elemento de un <PropertyGroup>IpaPackageDir archivo. Por ejemplo, podría agregar lo siguiente a la parte inferior del archivo <PropertyGroup><PropertyGroup> del proyecto de aplicación de iOS (justo antes de la etiqueta de </Project> cierre):

    <PropertyGroup>
        <IpaPackageDir>$(OutputPath)</IpaPackageDir>
    </PropertyGroup>
    
  • Un enfoque mejor es agregar un elemento a la parte inferior del existente que se corresponda con la configuración utilizada para <IpaPackageDir><PropertyGroup> compilar el archivo <IpaPackageDir> Esta opción es mejor porque preparará el proyecto para la futura compatibilidad con una configuración prevista en la página de propiedades del proyecto de Opciones IPA para iOS (iOS IPA Options). Si actualmente usa la configuración Release|iPhone para compilar el archivo Release|iPhone el grupo de propiedades actualizado completo podría tener un aspecto similar al siguiente:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
        <Optimize>true</Optimize>
        <OutputPath>bin\iPhone\Release</OutputPath>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
        <ConsolePause>false</ConsolePause>
        <CodesignKey>iPhone Developer</CodesignKey>
        <MtouchUseSGen>true</MtouchUseSGen>
        <MtouchUseRefCounting>true</MtouchUseRefCounting>
        <MtouchFloat32>true</MtouchFloat32>
        <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
        <MtouchLink>SdkOnly</MtouchLink>
        <MtouchArch>;ARMv7, ARM64</MtouchArch>
        <MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>
        <MtouchTlsProvider>Default</MtouchTlsProvider>
        <PlatformTarget>x86&</PlatformTarget>
        <BuildIpa>true</BuildIpa>
        <IpaPackageDir>$(OutputPath</IpaPackageDir>
    </PropertyGroup>
    

Una técnica alternativa para las compilaciones de línea de comandos de msbuild o xbuild consiste en agregar un argumento para establecer la propiedad . En este caso, tenga en cuenta que msbuild no expande las expresiones pasadas en la línea de comandos, por lo que no es posible usar la $(OutputPath) sintaxis . En su lugar, debe proporcionar un nombre completo de la ruta de acceso. El comando xbuild de Mono expande expresiones, pero sigue siendo preferible usar un nombre de ruta de acceso completo porque xbuild ha quedado en desuso en favor de la versión multiplataforma de msbuild.

Un ejemplo completo que utiliza este enfoque podría ser similar al siguiente en Windows:

msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:ServerAddress="192.168.1.3" /p:ServerUser="macuser" /p:IpaPackageDir="%USERPROFILE%\Builds" /t:Build SingleViewIphone1.sln

O al siguiente en Mac:

msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:IpaPackageDir="$HOME/Builds" /t:Build SingleViewIphone1.sln

Instalación de un IPA mediante iTunes

El paquete IPA resultante se puede entregar a los usuarios de prueba para la instalación en sus dispositivos iOS o enviarse para la implementación empresarial. Independientemente del método que se seleccione, el usuario final instalará el paquete en la aplicación de iTunes en su Mac o PC de Windows haciendo doble clic en el archivo IPA, o bien arrastrándolo a la ventana de iTunes abierta.

La nueva aplicación de iOS se muestra en la sección Mis aplicaciones, en la que puede hacer clic y obtener información sobre la aplicación:

Ahora el usuario puede sincronizar iTunes con su dispositivo para instalar la nueva aplicación de iOS.

Resumen

En este artículo se trata la configuración necesaria para preparar una aplicación de Xamarin.iOS para una compilación que no pertenezca a la App Store. También se explica cómo crear un paquete IPA y cómo instalar la aplicación de iOS resultante en el dispositivos iOS del usuario final para las pruebas o la distribución interna.