Partilhar via


Suporte de IPA no Xamarin.iOS

Este artigo aborda como criar um arquivo de IPA que pode ser usado para implantar um aplicativo usando a distribuição ad hoc, seja para teste ou para distribuição interna de aplicativos internos.

Além de liberar um aplicativo para venda por meio da iTunes App Store, ele pode ser implantado para os seguintes usos:

  • Teste Ad Hoc – um aplicativo iOS pode ser implantado para até 100 usuários (identificados pelos UUIDs do dispositivo iOS específico) para fins de teste alfa e beta. Consulte nossa documentação de Provisionamento de um dispositivo para o desenvolvimento de iOS para obter informações detalhadas sobre como adicionar dispositivos iOS de teste à sua conta de desenvolvedor da Apple e o guia Ad-Hoc para saber mais sobre como distribuir dessa forma.
  • Em Implantação Da Casa/Empresa — um aplicativo iOS pode ser implantado internamente, dentro de uma empresa, o que requer associação ao programa Developer Enterprise da Apple. Mais informações sobre a Distribuição interna estão descritas em detalhes no guia Distribuição interna.

Em ambos os casos, um pacote de IPA (um tipo especial de arquivo zip) deve ser criado e assinado digitalmente com o perfil de Provisionamento de Distribuição correto. Este artigo aborda as etapas necessárias para compilar o pacote IPA e instalá-lo em um dispositivo iOS usando o iTunes em um Mac ou PC com Windows.

O arquivo iTunesMetadata.plist

Quando um aplicativo iOS é criado no iTunes Connect (para venda ou lançamento gratuito pela iTunes App Store), o desenvolvedor pode especificar informações, como gênero do aplicativo, subgênero, direitos autorais, dispositivos iOS com suporte e os recursos do dispositivo necessários.

Aplicativos iOS entregues por meio de distribuição Interna ou Ad Hoc precisam ter alguma maneira de dar suporte a essas informações para que possam ser visíveis no iTunes e no dispositivo do usuário. Por padrão, um pequeno arquivo iTunesMetadata.plist é criado sempre que você compila seu projeto e ele é armazenado no diretório do projeto.

Um iTunesMetadata.plist personalizado também pode ser criado para fornecer informações adicionais para uma distribuição. Para saber mais sobre o conteúdo desse arquivo e como criá-lo, consulte nossa documentação Conteúdo do iTunesMetadata.plist e Como criar um arquivo iTunesMetadata.plist.

Arte do iTunes

Ao entregar seu aplicativo por um meio que não seja a App Store, você também precisa incluir uma imagem 512x512 e outra 1024x1024 que serão usadas para representar seu aplicativo no iTunes.

Para especificar a Arte do iTunes, faça o seguinte:

  1. Clique duas vezes no arquivo Info.plist no Gerenciador de Soluções para abri-lo para edição.
  2. Role até a seção Arte do iTunes do editor.
  3. Para qualquer imagem ausente, clique na miniatura no editor, selecione o arquivo de imagem para a arte do iTunes desejada na caixa de diálogo Abrir Arquivo e clique no botão OK ou Abrir.
  4. Repita essa etapa até especificar todas as imagens necessárias para seu aplicativo.

Consulte a documentação Arte do iTunes para obter mais detalhes.

Como criar um IPA

A ação de criar um IPA agora é interna no novo fluxo de trabalho de publicação. Para fazer isso, siga as instruções abaixo para arquivar seu aplicativo, assiná-lo e salvar seu IPA.

Antes de começar a criar um IPA para uma solução de plataforma cruzada, selecione o projeto iOS como seu projeto de inicialização:

Selecionou o projeto do iOS como o projeto de inicialização

Compilar seu arquivo morto

Para compilar um IPA, é preciso criar um arquivo morto de um build de versão de nosso aplicativo. Este Arquivo Morto contém nosso aplicativo e informações de identificação sobre ele.

  1. Selecione a versão | Configuração do dispositivo no Visual Studio para Mac: !

    Selecione a versão | Configuração do dispositivo

  2. No menu Compilar , selecione Arquivo Morto para Publicação:

    Selecione Arquivo Morto para Publicação

  3. Quando o arquivo tiver sido criado, a exibição Arquivos Mortos será exibida:

    O modo de exibição Arquivos será exibido

Assinar e distribuir seu aplicativo

Sempre que você compilar seu aplicativo para o Arquivo Morto, ele abrirá automaticamente a Exibição de Arquivos Mortos, exibindo todos os projetos arquivados, agrupados por solução. Por padrão essa exibição mostra apenas a solução atual aberta. Para ver todas as soluções que têm arquivos, clique na opção Mostrar todos os arquivos mortos.

É recomendável que os arquivos mortos implantados para clientes (implantações Ad-Hoc ou Internas) sejam mantidos, de modo que qualquer informação de depuração gerada possa ser simbolizada posteriormente.

Observe que, para os builds não da App Store, o arquivo iTunesMetadata.plist e o conjunto de arte do iTunes serão incluídos automaticamente no IPA se forem encontrados no arquivo morto.

Para assinar seu aplicativo e prepará-lo para distribuição:

  1. Selecione o botão Assinar e Distribuir..., como ilustrado abaixo:

    Selecione Assinar e Distribuir...

  2. Isso abrirá o assistente de publicação. Selecione o canal de distribuição Ad Hoc ou Empresarial (Interno) para criar um pacote:

    Selecione a distribuição Ad-Hoc ou Enterprise In-House

  3. Na tela Perfil de Provisionamento, selecione sua identidade de assinatura e o perfil de provisionamento correspondente ou repita a assinatura com outra identidade:

    Selecione a identidade de assinatura e o perfil de provisionamento correspondente

  4. Verifique os detalhes de seu pacote e, em seguida, clique em Publicar:

    Verificar os detalhes do pacote

  5. Por fim, salve o IPA em seu computador:

    Salvar o IPA no computador

Criação via linha de comando (em Mac)

Em determinados casos, como em um ambiente de CI, pode ser necessário compilar o IPA via linha de comando. Siga as etapas abaixo para fazer isso:

  1. Verifique se as Opções > de Projeto iOS IPA Opções > incluem iTunesArtwork imagens está marcada e Compilar pacote ad hoc/enterprise (IPA) está marcada:

    Inclua imagens do iTunesArtwork e a opção Criar IPA de pacote ad hoc/enterprise está marcada

    Se preferir, em vez disso, você pode editar o arquivo .csproj em um editor de texto e adicionar manualmente as duas propriedades correspondentes ao PropertyGroup para a configuração que será usada para compilar o aplicativo:

    <BuildIpa>true</BuildIpa>
    <IpaIncludeArtwork>false</IpaIncludeArtwork>
    
  2. Se estiver incluindo um arquivo iTunesMetadata.plist opcional, clique no botão ..., selecione-o na lista e clique no botão OK:

    Selecione iTunesMetadata.plist na lista

  3. Chame msbuild diretamente e passe esta propriedade na linha de comando:

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

Personalizando o local de IPA

No MSBuild, uma nova propriedade IpaPackageDir foi adicionada para facilitar a personalização do local de saída do arquivo .ipa. Se IpaPackageDir estiver definido como um local personalizado, o arquivo .ipa será colocado nesse local, em vez de no subdiretório padrão com carimbo de data/hora. Isso pode ser útil ao criar builds automatizados que dependem de um caminho de diretório específico para funcionarem corretamente, como aqueles usados para builds de CI (Integração Contínua).

Há várias maneiras possíveis de se usar a nova propriedade:

Por exemplo, para fazer a saída do arquivo .ipa no antigo diretório padrão (como no Xamarin.iOS 9.6 e inferior), você pode definir a propriedade IpaPackageDir como $(OutputPath) usando uma das abordagens a seguir. As duas abordagens são compatíveis com todos os builds do Xamarin.iOS de API Unificada, incluindo builds do IDE, bem como builds de linha de comando que usam msbuild, xbuild ou mdtool:

  • A primeira opção é definir a propriedade IpaPackageDir dentro de um elemento <PropertyGroup> em um arquivo MSBuild. Por exemplo, você poderia adicionar o seguinte <PropertyGroup> à parte inferior do arquivo .csproj do projeto de aplicativo do iOS (logo antes da marca de fechamento </Project>):

    <PropertyGroup>
        <IpaPackageDir>$(OutputPath)</IpaPackageDir>
    </PropertyGroup>
    
  • Uma abordagem melhor seria adicionar um elemento <IpaPackageDir> à parte inferior do <PropertyGroup> existente que corresponde à configuração usada para compilar o arquivo .ipa. Ela é melhor porque preparará o projeto para compatibilidade futura com uma configuração planejada na página de propriedades do projeto Opções do IPA do iOS. Se você estiver usando a configuração Release|iPhone para compilar o arquivo .ipa no momento, o grupo de propriedades completo atualizado poderá ficar parecido com o seguinte:

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

Uma técnica alternativa para builds de linha de comando msbuild ou xbuild é a adição de um argumento de linha de comando /p: para definir a propriedade IpaPackageDir. Neste caso, observe que msbuild não expande as expressões $() passadas na linha de comando, portanto, não é possível usar a sintaxe $(OutputPath). Em vez disso, você deve fornecer um nome de caminho completo. O comando xbuild do Mono expande as expressões $(), mas ainda é preferível usar um nome de caminho completo, pois o xbuild foi preterido em favor da versão multiplataforma do msbuild.

Um exemplo completo que usa essa abordagem pode ser semelhante ao seguinte no 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 semelhante ao seguinte no Mac:

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

Como instalar um IPA usando iTunes

O pacote IPA resultante pode ser entregue a seus usuários de teste para instalação em seus dispositivos iOS ou enviado para implantação Empresarial. Não importa o método escolhido, o usuário final instalará o pacote nos aplicativos iTunes no Mac ou computador Windows clicando duas vezes no arquivo IPA (ou arrastando-o para a janela do iTunes aberta).

O novo aplicativo iOS será mostrado na seção Meus Aplicativos, na qual você pode clicar com o botão direito do mouse e obter informações sobre o aplicativo:

O usuário agora pode sincronizar o iTunes com seu dispositivo para instalar o novo aplicativo iOS.

Resumo

Este artigo abordou a configuração necessária para preparar um aplicativo Xamarin.iOS para um build fora da App Store. Ele mostrou como criar um Pacote IPA e como instalar o aplicativo iOS resultante no dispositivo iOS do usuário final para teste ou Distribuição Interna.