O Xcode 3.2 fornece um novo recurso incrível no menu Build, "Build and Archive", que gera um arquivo .ipa adequado para distribuição Ad Hoc. Você também pode abrir o Organizer, vá para "Aplicativos arquivados" e "Enviar aplicativo para o iTunesConnect".
Existe uma maneira de usar "Compilar e arquivar" na linha de comando (como parte de um script de compilação)? Eu diria que isso xcodebuild
estaria envolvido de alguma forma, mas a man
página parece não dizer nada sobre isso.
ATUALIZAÇÃO Michael Grinich solicitou esclarecimentos; aqui está o que exatamente você não pode fazer com a criação de linhas de comando, recursos que você SOMENTE pode fazer com o Organizador do Xcode depois de "Criar e arquivar".
- Você pode clicar em "Compartilhar aplicativo ..." para compartilhar seu IPA com testadores beta. Como Guillaume aponta abaixo, devido a alguma mágica do Xcode, esse arquivo IPA não requer um arquivo .mobileprovision distribuído separadamente que os testadores beta precisam instalar; isso é mágico. Nenhum script de linha de comando pode fazer isso. Por exemplo, o script da Arrix (enviado em 1º de maio) não atende a esse requisito.
- Mais importante, depois de testar uma versão beta, você pode clicar em "Enviar aplicativo ao iTunes Connect" para enviar a mesma versão EXATA para a Apple, a mesma versão binária que você testou, sem reconstruí-la. Isso é impossível na linha de comando, porque assinar o aplicativo faz parte do processo de compilação; você pode assinar bits para o teste beta ad hoc OU pode assiná-los para envio à App Store, mas não ambos. Nenhum IPA criado na linha de comando pode ser testado em beta nos telefones e depois enviado diretamente à Apple.
Eu adoraria que alguém aparecesse e me provasse errado: esses dois recursos funcionam muito bem na interface gráfica do Xcode e não podem ser replicados a partir da linha de comando.
fonte
xcodebuild
. Criar um arquivo IPA envolve apenas colocar o aplicativo em um diretório chamado "Payload", compactar esse diretório e renomeá-lo para MyAppName.ipa.Respostas:
Eu descobri como automatizar o processo de compilação e arquivamento a partir da linha de comando. Acabei de escrever um artigo explicando como você pode conseguir isso.
O comando que você precisa usar é
xcrun
:Você encontrará todos os detalhes no artigo . Se você tiver alguma dúvida, não hesite em perguntar.
fonte
RELEASE_BUILDDIR
precisa ser um caminho absoluto.-o "${ipa_path}"
deve ser um caminho absoluto. Caso contrário, você provavelmente obteráerror: Unable to create '.../...ipa'
ou será silenciosamente ignorado a criação. Porra, me desperdiçou algumas horas.Com o Xcode 4.2, você pode usar o sinalizador -scheme para fazer isso:
Após este comando, o arquivo será exibido no Xcode Organizer.
fonte
archive
ação não respeita nenhuma configuração fornecida por meio desta invocação, além do espaço de trabalho e do esquema - isso me custou horas !xcode-select <path to Xcode.app>
-scheme <SchemeName>
"Arquivo
Exportação IPA ( observe a opção de exportação )
Para quem não conhece o exportOptions.plist, https://blog.bitrise.io/new-export-options-plist-in-xcode-9
Aqueles que estavam usando isso para o projeto de construção em ferramentas de CI / CD como teamcity / jenkins, certifique-se de usar o xcode certo instalado no agente de construção para arquivar e exportar.
Você pode usar uma das 2 opções abaixo para isso.
Aqui está o script da linha de comandos para criar exemplo de arquivo morto e IPA. Eu tenho um projeto iPhone xcode, localizado na pasta Desktop / MyiOSApp.
Execute os seguintes comandos, um por um:
Isso foi testado com o Xcode 5 e está funcionando bem para mim.
fonte
xcodebuild -workspace <ProjectName>/<ProjectName>.xcworkspace -scheme <schemeName> clean archive -configuration release -sdk iphoneos -archivePath <ProjectName>.xcarchive
está lançando erro:requires a provisioning profile with the Associated Domains feature. Select a provisioning profile for the "Release" build configuration in the project editor.
Eu tenho usado meu próprio script de construção para gerar o pacote ipa para distribuição ad hoc.
O script também incrementa o número da versão. Você pode remover essa parte se não for necessário. Espero que ajude.
fonte
A
xcodebuild
ferramenta pode criar e exportar produtos de arquivamento com o sinalizador -exportArchive (a partir do Xcode 5). A etapa de exportação anteriormente só era possível através da interface do usuário do Xcode Organizer.Primeiro arquive seu aplicativo:
Dado
$ARCHIVE_PATH
(o caminho para o arquivo .xcarchive ), exporte o aplicativo do arquivo morto com um dos seguintes:Arquivo .ipa do iOS :
Arquivo .app do Mac :
Em ambos os comandos dos -exportProvisioningProfile e -exportSigningIdentity argumentos são opcionais.
man xcodebuild
para detalhes sobre a semântica. Nesses exemplos, o perfil de provisionamento para a versão do iOS especificou um perfil de provisionamento de distribuição AdHoc, e a identidade de assinatura do aplicativo para Mac especificou um ID de desenvolvedor para exportação como um aplicativo de terceiros (ou seja, não distribuído pela Mac App Store).fonte
-workspace
opção ao xcodebuild (e um caminho para um espaço de trabalho)?man xcodebuild
afirma: "Para construir uma área de trabalho do Xcode, você deve passar as opções -workspace e -scheme para definir a construção".Desenvolvemos um aplicativo para iPad com o XCode 4.2.1 e queríamos integrar a compilação à nossa integração contínua (Jenkins) para distribuição OTA. Aqui está a solução que eu criei:
Depois, Jenkins carrega os arquivos ipa, plist e html em nosso servidor da web.
Este é o modelo plist:
Para configurar isso, você deve importar o certificado de distribuição e o perfil de provisionamento para o conjunto de chaves do usuário designado.
fonte
$WORKSPACE
em vez de$PWD
para gerarAPP_PATH
Eu achei algumas das outras respostas aqui difíceis de seguir. Este artigo fez se por mim. Alguns caminhos podem precisar ser absolutos, conforme mencionado nas outras respostas.
O comando:
fonte
Na verdade, você PODE renunciar uma compilação, assim como o XCode, para poder testar e enviar o mesmo binário. Por exemplo, no meu script (semelhante aos acima), eu construo minha versão de lançamento assinada como AdHoc, depois arquivo como IPA para teste, em seguida, renuncio ao meu certificado de distribuição e crio um arquivo zip, que é o que envio para Maçã. A linha relevante é:
fonte
Para o Xcode 7 , você tem uma solução muito mais simples. O único trabalho extra é que você precisa criar um arquivo plist de configuração para exportar o arquivo morto.
(Comparado ao Xcode 6, nos resultados de
xcrun xcodebuild -help
,-exportFormat
e as-exportProvisioningProfile
opções não são mais mencionadas; o primeiro é excluído e o segundo é substituído por-exportOptionsPlist
.)Etapa 1 , altere o diretório para a pasta, incluindo o arquivo .xcodeproject ou .xcworkspace.
Etapa 2 , use o Xcode ou
/usr/libexec/PlistBuddy exportOptions.plist
para criar um arquivo plist de opções de exportação. A propósito,xcrun xcodebuild -help
dirá quais chaves você deve inserir no arquivo plist.Etapa 3 , crie o arquivo .xcarchive (pasta, de fato) da seguinte maneira (a compilação / diretório será criada automaticamente pelo Xcode agora),
Etapa 4 , exporte como arquivo .ipa como este, diferente do Xcode6
Agora, você obtém um arquivo ipa no diretório build /. Basta enviá-lo para a Apple App Store.
A propósito, o arquivo ipa criado pelo Xcode 7 é muito maior que o Xcode 6.
fonte
-scheme
e-configuration
opções especificado como assinar o arquivo IPA.Eu dei uma breve descrição das etapas a seguir e dos parâmetros a serem transmitidos ao gerar um ipa usando o terrminal abaixo:
Vá para a pasta que contém o arquivo MyApp.xcodeproject no terminal
Ao usar o comando abaixo, você obterá todos os destinos do aplicativo
Após a execução do comando acima, você obterá uma lista de destinos dos quais você deve selecionar um destino específico que precisa gerar .ipa
O comando acima cria o projeto e cria um arquivo .app. O caminho para localizar o arquivo .app é
./build/Release-iphoneos/MyApp.app
Depois que o Build for bem-sucedido, execute o seguinte comando para gerar .ipa do aplicativo usando o Nome do desenvolvedor e o Perfil de provisionamento usando a sintaxe abaixo:
Explicação de cada parâmetro na sintaxe acima:
fonte
Xcode 8:
Formato IPA:
Exporta o arquivo MyMobileApp.xcarchive como um arquivo IPA para o caminho MyMobileApp.ipa usando o perfil de fornecimento MyMobileApp Distribution Profile.
Formato da APP:
Exporta o arquivo MyMacApp.xcarchive como um arquivo PKG para o caminho MyMacApp.pkg usando a identidade de assinatura de cátion do aplicativo de aplicativo Application ID do desenvolvedor Application: My Team. A identidade de assinatura do instalador ID do desenvolvedor Instalador: Minha equipe é implicitamente usada para assinar o pacote exportado.
Página de manual do Xcodebuild
fonte
Vá para a pasta onde está a raiz do seu projeto e:
fonte
Indo um passo adiante, fazendo o upload para o iTunesConnect via linha de comando com o Xcode 7 ! (Supondo que você esteja começando com um
.ipa
que tenha sido assinado com o perfil de liberação e a identidade de assinatura corretos.)Digite
altool
a interface da CLI para o Application Loader (docs
, página 38). Escondida na estrutura do Xcode.app, está uma função útil para nos enviar diretamente para o ItunesConnect.Basta executar o
$ altool --upload-app -f file -u username [-p password]
upload do seu recém-cunhado.ipa
direto para a Apple. A senha é opcional e solicitará se você a deixar de fora do comando.Se houver algum problema com o aplicativo durante a etapa de verificação, o console os imprimirá.
Você provavelmente terá que exportar o caminho para
altool
se não quiser salvar sua localização.É isso aí! Basta acessar o iTunesConnect.com e selecionar sua nova versão para teste com testflight.
Nota final: Se você receber um erro dizendo
Exception while launching iTunesTransporter: Transporter not found at path: /usr/local/itms/bin/iTMSTransporter. You should reinstall the application
, pode seguir a sugestão desta resposta do SO para executar um link simbólico no local correto:fonte
Melhorando a resposta de Vincent, escrevi um script para fazer isso:
xcodearchive
Permite arquivar (gerar um ipa) seu projeto através da linha de comando. Pense nisso como a irmã do
xcodebuild
comando, mas para arquivar.O código está disponível no github: http://github.com/gcerquant/xcodearchive
Uma opção do script é ativar o arquivamento dos símbolos dSYM em um arquivo com registro de data e hora. Não há desculpa para não manter mais os símbolos e não ser capaz de simbolizar o log de falhas que você poderá receber posteriormente.
fonte
Como criar um projeto iOS com o comando?
&&
&&
O que é o ExportOptions.plist?
ExportOptions.plist é necessário no Xcode. Permite especificar algumas opções ao criar um arquivo ipa. Você pode selecionar as opções em uma interface amigável ao usar o Xcode para arquivar seu aplicativo.
Importante : O método para liberação e desenvolvimento é diferente no ExportOptions.plist
AppStore:
Desenvolvimento
fonte
Experimente o xctool, é um substituto do xcodebuild da Apple que facilita a criação e o teste de produtos iOS e Mac. É especialmente útil para integração contínua. Possui alguns recursos extras:
No.3 é extremamente útil. Não sei se alguém pode ler a saída do console do xcodebuild, não sei, geralmente isso me dava uma linha com mais de 5000 caracteres. Ainda mais difícil de ler do que um trabalho de tese.
xctool: https://github.com/facebook/xctool
fonte
se você usar a próxima ferramenta: https://github.com/nomad/shenzhen
então esta tarefa é muito fácil:
fonte
fonte
Após atualizar para o Xcode 8, descobri que o ipa corporativo gera por
Então mudei para
xcodebuild -exportArchive
e tudo voltou ao normal.fonte
Você quer dizer as opções de validar / compartilhar / enviar? Eu acho que esses são específicos para o Xcode e não são adequados para uma ferramenta de criação de linha de comando.
Com alguma esperteza, aposto que você poderia criar um script para fazer isso por você. Parece que eles estão armazenados apenas em
~/Library/MobileDevice/Archived Applications/
com um UUDI e uma lista. Não posso imaginar que seria tão difícil fazer a engenharia reversa do validador também.O processo que eu estou interessado em automatizar está enviando builds para beta testers. (Como o envio da App Store acontece com pouca frequência, não me importo de fazê-lo manualmente, principalmente porque geralmente preciso adicionar um novo texto de descrição.) Ao fazer um pseudo Build + Archive usando a CLI do Xcode, posso acionar compilações automáticas a cada confirmação de código, crie arquivos IPA com perfis de provisionamento incorporados e envie por e-mail aos testadores.
fonte
xcodebuild
e cria um IPA.