Prise en charge d’IPA dans Xamarin.iOS

Cet article explique comment créer un fichier IPA afin de déployer une application à l’aide de la distribution ad hoc, soit pour des tests, soit pour distribuer en interne des applications internes.

Non seulement vous pouvez mettre en vente une application sur l’App Store d’iTunes, mais vous pouvez également la déployer pour les utilisations suivantes :

  • Tests ad hoc - Vous pouvez déployer une application iOS pour un nombre maximal de 100 utilisateurs (identifiés par les UUID d’appareils iOS spécifiques) à des fins de test de versions alpha et bêta. Pour obtenir des informations détaillées sur l’ajout d’appareils iOS de test à votre compte de développeur Apple, consultez Provisionnement d’un appareil iOS pour le développement dans notre documentation. Pour plus d’informations sur la distribution d’applications selon le mode ad hoc, consultez également le guide Ad hoc.
  • Déploiement interne/entreprise : une application iOS peut être déployée en interne, au sein d’une entreprise, ce qui nécessite l’adhésion au programme Développeur Entreprise d’Apple. Pour plus d’informations sur la distribution en interne, consultez le guide Distribution en interne.

Dans les deux cas, un paquet IPA (type spécial de fichier zip) doit être créé et signé numériquement avec le profil de provisionnement de distribution approprié. Cet article décrit les étapes nécessaires pour générer le paquet IPA et l’installer sur un appareil iOS à l’aide d’iTunes depuis un Mac ou un PC Windows.

Fichier iTunesMetadata.plist

Quand un développeur crée une application iOS dans iTunes Connect (qu’elle soit gratuite ou payante sur l’App Store d’iTunes), il peut spécifier des informations telles que le genre, le sous-genre, le copyright, les appareils iOS pris en charge, ainsi que les fonctionnalités offertes.

Les applications iOS fournies via une distribution ad hoc ou en interne doivent pouvoir prendre en charge ces informations pour qu’elles soient visibles sur iTunes et sur l’appareil de l’utilisateur. Par défaut, un petit fichier iTunesMetadata.plist est créé chaque fois que vous générez votre projet. Il est stocké dans le répertoire du projet.

Vous pouvez également créer un fichier iTunesMetadata.plist personnalisé pour fournir les informations supplémentaires d’une distribution. Pour plus d’informations sur le contenu de ce fichier et sur la manière de le créer, consultez Contenu d’iTunesMetadata.plist et Création d’un fichier iTunesMetadata.plist dans notre documentation.

Conception graphique iTunes

Quand vous distribuez votre application via d’autres moyens que l’App Store, vous devez également inclure une image de 512 x 512 pixels et de 1 024 x 1 024 pixels, qui est utilisée pour représenter votre application dans iTunes.

Pour spécifier les illustrations iTunes, effectuez les tâches suivantes :

  1. Dans l’Explorateur de solutions, double-cliquez sur le fichier Info.plist pour l’ouvrir et le modifier.
  2. Faites défiler l’affichage jusqu’à la section Conception graphique iTunes de l’éditeur.
  3. Pour toute image manquante, cliquez sur la miniature appropriée dans l’éditeur. À partir de la boîte de dialogue Ouvrir un fichier, sélectionnez le fichier image correspondant à l’illustration iTunes souhaitée, puis cliquez sur le bouton OK ou Ouvrir.
  4. Répétez cette étape jusqu’à ce que toutes les images nécessaires aient été spécifiées pour votre application.

Pour plus d’informations, consultez Conception graphique iTunes dans la documentation.

Création d’un fichier IPA

La création d’un fichier IPA est désormais intégrée au nouveau workflow de publication. Suivez les instructions ci-dessous pour archiver votre application, la signer et enregistrer votre fichier IPA.

Avant de commencer à créer un fichier IPA pour une solution multiplateforme, vérifiez que vous avez sélectionné le projet iOS en tant que projet de démarrage :

Sélectionné le projet iOS comme projet de démarrage

Générer votre archive

Pour générer un fichier IPA, nous devons créer une archive d’une build de mise en production de notre application. Cette archive contient notre application et les informations d’identification correspondantes.

  1. Sélectionnez la mise en production | Configuration de l’appareil dans Visual Studio pour Mac : !

    Sélectionnez la mise en production | Configuration de l’appareil

  2. Dans le menu Générer , sélectionnez Archiver pour la publication :

    Sélectionner Archiver pour la publication

  3. Une fois l’archive créée, l’affichage Archives est présenté :

    La vue Archives s’affiche

Signer et distribuer votre application

Chaque fois que vous générez votre application pour qu’elle soit archivée, l’affichage Archives s’ouvre automatiquement, ce qui entraîne l’affichage de tous les projets archivés, regroupés par solution. Par défaut, cet affichage montre uniquement la solution actuelle, ouverte. Pour afficher toutes les solutions ayant des archives, cliquez sur l’option Afficher toutes les archives.

Il est recommandé de conserver les archives déployées auprès des clients (déploiements ad hoc ou Interne) pour que les informations de débogage générées puissent être symbolisées plus tard.

Notez que pour les builds non liées à l’App Store, le fichier iTunesMetadata.plist et les illustrations iTunes sont automatiquement inclus dans votre fichier IPA, s’ils se trouvent dans l’archive.

Pour signer votre application et préparer sa distribution :

  1. Cliquez sur le bouton Signer et distribuer, comme indiqué dans l’illustration ci-dessous :

    Sélectionnez Signer et distribuer...

  2. Cela entraîne l’ouverture de l’Assistant Publication. Sélectionnez le canal de distribution Ad hoc ou Entreprise(interne) pour créer un paquet :

    Sélectionnez la distribution ad hoc ou entreprise In-House

  3. Dans l’écran Profil de provisionnement, sélectionnez votre identité de signature et le profil de provisionnement correspondant, ou reconnectez-vous avec une autre identité :

    Sélectionner l’identité de signature et le profil d’approvisionnement correspondant

  4. Vérifiez les détails du paquet, puis cliquez sur Publier :

    Vérifier les détails du package

  5. Enfin, enregistrez le fichier IPA sur votre machine :

    Enregistrer l’IPA sur l’ordinateur

Génération via la ligne de commande (sur Mac)

Dans certains cas, par exemple dans un environnement d’intégration continue (CI), vous devez créer le fichier IPA via la ligne de commande. Suivez les étapes ci-dessous pour y parvenir :

  1. Vérifiez que Options de projet > Options > IPA iOS Inclure les images iTunesArtwork est cochée et que Générer un package ad hoc/entreprise (IPA) est coché :

    Inclure des images iTunesArtwork et Créer un package ad hoc/d’entreprise IPA est coché

    Si vous préférez, vous pouvez modifier le fichier .csproj dans un éditeur de texte et ajouter manuellement les deux propriétés correspondantes à PropertyGroup pour la configuration servant à générer l’application :

    <BuildIpa>true</BuildIpa>
    <IpaIncludeArtwork>false</IpaIncludeArtwork>
    
  2. Si vous incluez un fichier iTunesMetadata.plist facultatif, cliquez sur le bouton ..., sélectionnez-le dans la liste, puis cliquez sur OK :

    Sélectionnez iTunesMetadata.plist dans la liste.

  3. Appelez msbuild directement et passez cette propriété sur la ligne de commande :

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

Personnalisation de l’emplacement du fichier IPA

Une nouvelle propriété MSBuildIpaPackageDir a été ajoutée pour faciliter la personnalisation de l’emplacement de sortie du fichier .ipa. Si IpaPackageDir est défini à l’aide d’un emplacement personnalisé, le fichier .ipa est stocké dans cet emplacement au lieu du sous-répertoire horodaté par défaut. Cela peut être utile quand vous créez des builds automatisées qui reposent sur un chemin de répertoire spécifique pour fonctionner correctement, par exemple les build d’intégration continue (CI).

Il existe plusieurs façons d’utiliser la nouvelle propriété :

Par exemple, pour générer le fichier .ipa dans l’ancien répertoire par défaut (comme dans Xamarin.iOS 9.6 et versions antérieures), vous pouvez définir la propriété sur IpaPackageDir à $(OutputPath) l’aide de l’une des approches suivantes. Les deux approches sont compatibles avec toutes les builds d’API unifiée Xamarin.iOS, notamment les builds d’IDE et les builds de ligne de commande qui utilisent msbuild, xbuild ou mdtool :

  • La première option consiste à définir la propriété IpaPackageDir dans un élément <PropertyGroup> d’un fichier MSBuild. Par exemple, vous pouvez ajouter le <PropertyGroup> suivant au bas du fichier .csproj du projet d’application iOS (juste avant la balise de fermeture </Project>) :

    <PropertyGroup>
        <IpaPackageDir>$(OutputPath)</IpaPackageDir>
    </PropertyGroup>
    
  • Une meilleure approche consiste à ajouter un <IpaPackageDir> élément au bas de l’existant <PropertyGroup> qui correspond à la configuration utilisée pour générer le fichier .ipa . Cette solution est préférable, car elle permet de préparer le projet pour une compatibilité future avec un paramètre planifié de la page de propriétés de projet dans les Options IPA iOS. Si vous utilisez actuellement la Release|iPhone configuration pour générer le fichier .ipa , le groupe de propriétés mis à jour complet peut ressembler à ce qui suit :

    <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>
    

Il existe une autre technique pour les builds de ligne de commande msbuild ou xbuild. Elle consiste à ajouter un argument /p: pour définir la propriété IpaPackageDir. Dans ce cas, notez que msbuild ne développe pas les expressions $() passées sur la ligne de commande, il est donc impossible d’utiliser la syntaxe $(OutputPath). À la place, vous devez fournir un chemin complet. La commande Mono xbuild développe les expressions $(), mais il est tout de même préférable d’utiliser un nom de chemin complet, car xbuild a été déprécié au profit de la version multiplateforme de msbuild.

Voici à quoi peut ressembler un exemple complet de cette approche sur 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

Ou sur Mac :

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

Installation d’un fichier IPA à l’aide d’iTunes

Vous pouvez remettre le paquet IPA à vos utilisateurs de test pour qu’ils l’installent sur leurs appareils iOS, ou le préparer à un déploiement en entreprise. Quelle que soit la méthode choisie, l’utilisateur final installe le paquet dans son application iTunes sur Mac ou sur PC Windows en double-cliquant sur le fichier IPA (ou en le faisant glisser vers la fenêtre ouverte d’iTunes).

La nouvelle application iOS s’affiche dans la section My Apps (Mes applications). Pour obtenir des informations sur l’application, il vous suffit de cliquer sur celle-ci avec le bouton droit de la souris :

L’utilisateur peut à présent synchroniser son appareil avec iTunes pour installer la nouvelle application iOS.

Résumé

Cet article a décrit les étapes nécessaires à la préparation d’une application Xamarin.iOS pour une build non liée à l’App Store. Il a montré comment créer un paquet IPA et comment installer l’application iOS qui en résulte sur l’appareil iOS de l’utilisateur final à des fins de test ou de distribution en interne.