Condividi tramite


Supporto IPA in Xamarin.iOS

Questo articolo illustra come creare un file IPA che è possibile usare per distribuire un'applicazione con la distribuzione ad hoc, a scopo di test o per la distribuzione interna di applicazioni interne.

Un'applicazione, oltre a essere rilasciata per la vendita tramite l'App Store iTunes, può essere distribuita per gli usi seguenti:

  • Testing ad hoc: un'applicazione iOS può essere distribuita fino a 100 utenti (identificati dagli UUID dei dispositivi iOS specifici) per eseguire test alfa e beta. Vedere la documentazione Provisioning di un dispositivo iOS per lo sviluppo per informazioni dettagliate sull'aggiunta di dispositivi iOS di test all'account sviluppatore Apple e la guida Ad hoc per altre informazioni su come eseguire questo tipo di distribuzione.
  • Distribuzione interna/aziendale: per distribuire un'applicazione iOS internamente, in una società, è necessaria l'appartenenza al programma Developer Enterprise di Apple. Per altre informazioni dettagliate sulla distribuzione interna, vedere la guida Distribuzione interna.

In entrambi i casi, è necessario creare un pacchetto IPA (un tipo speciale di file ZIP) e applicarvi una firma digitale con il profilo di provisioning di distribuzione corretto. Questo articolo illustra la procedura necessaria per creare il pacchetto IPA e installarlo in un dispositivo iOS usando iTunes su un Mac o un PC Windows.

File iTunesMetadata.plist

Quando un'applicazione iOS viene creata in iTunes Connect (per la vendita o il rilascio gratuito dall'App Store iTunes), lo sviluppatore può specificare informazioni come il genere dell'applicazione, il genere secondario, le informazioni sul copyright, i dispositivi iOS supportati e le funzionalità dei dispositivi necessarie.

Le applicazioni iOS distribuite tramite la distribuzione ad hoc o interna devono supportare queste informazioni in modo che siano visibili in iTunes e nel dispositivo dell'utente. Per impostazione predefinita, viene creato un file iTunesMetadata.plist di piccole dimensioni ogni volta che il progetto viene compilato e archiviato nella directory di progetto.

È anche possibile creare un file iTunesMetadata.plist personalizzato per fornire le informazioni aggiuntive a una distribuzione. Per altre informazioni sul contenuto di questo file e su come crearlo, vedere la documentazione Contenuti di iTunesMetadata.plist e Creazione di un file iTunesMetadata.plist.

Illustrazione di iTunes

Quando si distribuisce l'app senza App Store, è anche necessario includere un'immagine in formato 512x512 e 1024x1024 che verrà usata per rappresentare l'applicazione in iTunes.

Per specificare l'illustrazione di iTunes, seguire questa procedura:

  1. Fare doppio clic sul file Info.plist in Esplora soluzioni per aprirlo e modificarlo.
  2. Scorrere fino alla sezione iTunes Artwork dell'editor.
  3. Per un'immagine mancante, fare clic sull'anteprima nell'editor, selezionare il file di immagine per l'illustrazione di iTunes desiderata dalla finestra di dialogo Apri file e fare clic sul pulsante OK o Apri.
  4. Ripetere questo passaggio finché non vengono specificate tutte le immagini necessarie per l'applicazione.

Per informazioni più dettagliate, vedere la documentazione Illustrazione di iTunes.

Creazione di un file IPA

La creazione di un file IPA ora è predefinita nel nuovo flusso di lavoro di pubblicazione. A questo scopo, seguire le istruzioni riportate sotto per archiviare l'app, firmarla e salvare il file IPA.

Prima di iniziare a creare un file IPA per una soluzione multipiattaforma, assicurarsi di avere selezionato il progetto iOS come progetto di avvio:

Selected the iOS project as the startup project

Compilare l'archivio

Per compilare un file IPA, è necessario creare un archivio di una compilazione di rilascio dell'applicazione. Questo archivio contiene l'app e ne identifica le informazioni.

  1. Selezionare la configurazione Rilascio | Dispositivo in Visual Studio per Mac:

    Select the Release | Device configuration

  2. Scegliere Archivia per la pubblicazione dal menu Compila:

    Select Archive for Publishing

  3. Dopo aver creato l'archivio, sarà visualizzata la visualizzazione Archivi:

    The Archives view will be displayed

Firmare e distribuire l'app

Ogni volta in cui l'applicazione viene compilata per l'archivio, si apre automaticamente la visualizzazione Archivi, in cui vengono visualizzati tutti i progetti archiviati, raggruppati per tipo di soluzione. Per impostazione predefinita, in questa vista viene visualizzata soltanto la soluzione attualmente aperta. Per visualizzare tutte le soluzioni con archivi, fare clic sull'opzione Mostra tutti gli archivi.

È consigliabile mantenere gli archivi distribuiti ai clienti (distribuzione ad hoc o interna), in modo che le informazioni di debug generate possano essere rappresentate in futuro.

Se noti che per le compilazioni non App Store il file iTunesMetadata.plist e il set di illustrazioni di iTunes verranno automaticamente inclusi nel file IPA se vengono trovati nell'archivio.

Per firmare l'app e prepararla per la distribuzione:

  1. Selezionare il pulsante Firma e distribuisci, come illustrato di seguito:

    Select Sign and Distribute...

  2. Si aprirà la pubblicazione guidata. Selezionare il canale di distribuzione Ad hoc o Enterprise(Internamente) per creare un pacchetto:

    Select the Ad-Hoc or Enterprise In-House distribution

  3. Nella schermata Profilo di provisioning selezionare l'identità di firma e il profilo di provisioning corrispondente o ripetere la firma con un'altra identità:

    Select the signing identity and corresponding provisioning profile

  4. Verificare i dettagli del pacchetto e fare clic su Pubblica:

    Verify the package details

  5. Salvare infine il file IPA nel computer:

    Save the IPA to the computer

Compilazione tramite la riga di comando (su Mac)

In alcuni casi, ad esempio in un ambiente di integrazione continua, può essere necessario compilare il file IPA tramite la riga di comando. A questo scopo, seguire questa procedura:

  1. Verificare che le opzioni di Project Options > iOS IPA Options > Include iTunesArtwork images (Includi immagini iTunesArtwork) siano selezionate e che sia selezionato Build ad hoc/enterprise package (IPA):

    Include iTunesArtwork images and Build ad-hoc/enterprise package IPA is checked

    Se si preferisce, è invece possibile modificare il file con estensione csproj in un editor di testo e aggiungere manualmente le due proprietà corrispondenti a PropertyGroup per la configurazione che verrà usata per compilare l'app:

    <BuildIpa>true</BuildIpa>
    <IpaIncludeArtwork>false</IpaIncludeArtwork>
    
  2. Se si include un file iTunesMetadata.plist facoltativo, fare clic sul pulsante ..., selezionarlo dall'elenco e fare clic sul pulsante OK:

    Select iTunesMetadata.plist from the list

  3. Chiamare direttamente msbuild e passare questa proprietà nella riga di comando:

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

Personalizzazione del percorso del pacchetto IPA

Per semplificare la personalizzazione del percorso di output del file IPA, è stata aggiunta una nuova proprietà IpaPackageDirMSBuild. Se si imposta IpaPackageDir su un percorso personalizzato, il file IPA sarà inserito in tale posizione, invece che nella sottodirectory con timestamp predefinita. Può essere utile durante la creazione di compilazioni automatizzate che si basano su un percorso di directory specifico affinché funzionino correttamente, ad esempio nel caso di compilazioni di Integrazione continua (CI).

Esistono diverse possibilità d'uso della nuova proprietà:

Ad esempio, per eseguire l'output del file IPA nella directory predefinita precedente (come in Xamarin.iOS 9.6 e versioni precedenti), è possibile impostare la proprietà IpaPackageDir su $(OutputPath) usando uno degli approcci seguenti. I due approcci sono compatibili con tutte le compilazioni di Xamarin.iOS basate sull'API unificata, incluse le compilazioni IDE e quelle da riga di comando che usano msbuild, xbuild o mdtool:

  • La prima opzione consiste nell'impostare la proprietà IpaPackageDir in un elemento <PropertyGroup> di un file MSBuild. È ad esempio possibile aggiungere l'elemento <PropertyGroup> seguente alla fine del file con estensione csproj del progetto dell'app iOS, appena prima del tag </Project> di chiusura:

    <PropertyGroup>
        <IpaPackageDir>$(OutputPath)</IpaPackageDir>
    </PropertyGroup>
    
  • Per un approccio migliore, aggiungere <IpaPackageDir> alla fine dell'elemento <PropertyGroup> esistente che corrisponde alla configurazione usata per compilare il file IPA. Questa soluzione è preferibile perché prepara il progetto a essere compatibile in futuro con un'impostazione pianificata nella pagina delle proprietà del progetto Opzioni IPA iOS. Se si usa la configurazione Release|iPhone per la compilazione del file IPA, il gruppo di proprietà completo aggiornato sarà simile al seguente:

    <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 tecnica alternativa per le compilazioni da riga di comando msbuild o xbuild consiste nell'aggiungere un argomento /p: per impostare la proprietà IpaPackageDir. In questo caso si noti che msbuild non espande le espressioni $() passate nella riga di comando, quindi non è possibile usare la sintassi $(OutputPath). È invece necessario specificare un nome percorso completo. Il comando xbuild di Mono espande le espressioni $(), ma è comunque preferibile usare un nome percorso completo poiché xbuild è stato deprecato e sostituito dalla versione multipiattaforma di msbuild.

Un esempio completo che usa questo approccio è simile al seguente in 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 seguente in Mac:

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

Installazione di un file IPA con iTunes

Il pacchetto IPA risultante può essere distribuito agli utenti di test per l'installazione nei dispositivi iOS o inviato per la distribuzione Enterprise. Indipendentemente dal metodo scelto, l'utente finale installerà il pacchetto dell'applicazione iTunes nel Mac o nel PC Windows facendo doppio clic sul file IPA (o trascinandolo sulla finestra di iTunes aperta).

La nuova applicazione iOS verrà visualizzata nella sezione My Apps (App personali), su cui è possibile fare clic con il pulsante destro del mouse per ottenere informazioni sull'applicazione:

L'utente ora può sincronizzare iTunes con il dispositivo per installare la nuova applicazione iOS.

Riepilogo

Questo articolo ha illustrato la configurazione necessaria per preparare un'applicazione Xamarin.iOS per una compilazione senza App Store. Ha spiegato come creare un pacchetto IPA e come installare l'applicazione iOS risultante nel dispositivo iOS dell'utente finale per il test o la distribuzione interna.