Exporte o arquivo .ipa do projeto Xcode sem abrir o Xcode

9

Temos uma API que os usuários podem chamar para criar aplicativos / projetos do Cordova, carregar seu diretório www e, em seguida, iniciar a compilação e fazer o download do arquivo binário executável. Este arquivo binário irá então para uma loja privada de aplicativos.

Estou com problemas na etapa de compilação para iOS. A etapa de compilação do Cordova não é problema, mas não gera um arquivo binário, como acontece no Android. Depois de ler tudo o que encontrei no Stackoverflow e em outros lugares, o plano era este:

xcodebuild clean -configuration Release -alltargets
xcodebuild -scheme MyApp archive -archivePath build/MyApp
xcodebuild -exportArchive -exportFormat ipa -archivePath "build/MyApp.xcarchive" -exportPath "MyApp.ipa" -exportProvisioningProfile "My Prov Profile"

Dado que a identidade de assinatura e tudo está configurado corretamente, quase funciona. O primeiro comando é executado corretamente. O segundo comando apenas trava.

No entanto, se eu abrir o projeto no Xcode, e então executar os comandos, ele compila e exporta, e eu fico com um arquivo .ipa, que é o que eu queria. Parece que o Xcode configura um espaço de trabalho e algumas coisas relacionadas ao esquema quando o projeto é aberto pela primeira vez.

Existe alguma maneira que eu possa obter o xcodebuild (ou xcrun, ou qualquer coisa, para essa matéria) para criar este arquivo de área de trabalho para mim?

Ou há outra maneira de abordar isso?

Neste momento, tenho uma solução na qual, na verdade, abro o projeto do Xcode, aguardo 15 segundos e, em seguida, prossigo. Mas eu posso pensar em mil maneiras que irão falhar em algum momento, então eu gostaria de mudar isso para algo um pouco mais elegante.

Atualmente tenho o Xcode 6.3 instalado, se isso for relevante.

Atualização: a resposta da Opal abaixo me colocou no caminho certo (eu acho). O que acabei fazendo foi exportar um esquema compartilhado de acordo com o link da Opal e usá-lo como um modelo para futuros aplicativos. As soluções foram algo assim:

# Copy shared scheme file into directory
mkdir /path/to/project/dir/MyApp.xcodeproj/xcshareddata
mkdir /path/to/project/dir/MyApp.xcodeproj/xcshareddata/xcschemes
cp data/MyScheme.xcscheme /path/to/project/dir/MyApp.xcodeproj/xcshareddata/xcschemes/.

# Use sed to replace app name in scheme file
sed -i '' "s/%app_name%/MyApp/g" MyApp.xcodeproj/xcshareddata/xcschemes/MyScheme.xcscheme

# CD into directory
cd /path/to/project/dir

# Move files from Cordova to our build directory
cp -r CordovaLib/build/* build/.

# Build and export
xcodebuild clean -configuration Release -alltargets
xcodebuild -scheme MyScheme archive -archivePath build/MyApp
xcodebuild -exportArchive -exportFormat ipa -archivePath "build/MyApp.xcarchive" -exportPath "MyApp.ipa" -exportProvisioningProfile "MyProvProfile"
    
por Morten Krane 20.04.2015 в 09:42
fonte

2 respostas

2

Parece que o aplicativo que você tenta criar não possui esquemas compartilhados. Esquemas, se não compartilhados, são criados quando o projeto é carregado no xcode. Para criar esquemas compartilhados, veja este site.

    
por Opal 20.04.2015 / 13:31
fonte
0

Estas são as etapas que usei para automatizar a geração ipa sem abrir o xcode no meu ambiente cordova. (versão xcode: 6.0.1 versão cordova: 3.6.0)

  • Altere cordova / build.xcconfig : CODE_SIGN_IDENTITY = Distribuição do iPhone (altere "Desenvolvedor" para "Distribuição".)
  • execute cordova build ios --device no espaço de trabalho do cordova que gera o arquivo .app
  • Assinar usando: xcrun -sdk iphoneos PackageApplication -v ${WORKSPACE}/platforms/ios/build/device/${application.name}.app -o ${WORKSPACE}/platforms/ios/build/${application.name}.ipa --embed ${ios.distribution.provisionfile}.mobileprovision --sign ${code.signing.identity}
por kumar 20.04.2015 / 12:26
fonte