Xcode 6 - Como escolher certificado de assinatura/perfil de provisionamento para distribuição Ad-Hoc?

StackOverflow https://stackoverflow.com//questions/25056144

  •  21-12-2019
  •  | 
  •  

Pergunta

Para distribuir o aplicativo aos nossos testadores usamos o Xcode, o que fazemos usando o seguinte processo:

  • Arquivar aplicativo
  • Distribuir para Ad-Hoc
  • Escolha o perfil de provisionamento
  • Salve o .ipa em uma pasta

Mas com Xcode 6, esse fluxo de trabalho foi um pouco alterado.Ainda posso selecionar a opção de distribuição Ad-Hoc, mas não consigo selecionar o perfil de provisionamento desejado.Isso não nos dá controle sobre qual certificado de assinatura é usado e a configuração do perfil de provisionamento (usamos notificações push).

Por padrão iPhone distribution identidade de assinatura é usada e algum tipo de XC Ad Hoc é gerado o perfil de provisionamento, que pode ser visto na imagem abaixo:Exporting IPASe você clicar na seta perto do perfil de provisionamento, a pasta com perfis de provisionamento será aberta.

Então minha pergunta é:

Existe alguma maneira no Xcode 6 de selecionar o perfil de provisionamento usado com distribuição Ad Hoc?

Obrigado!

Foi útil?

Solução

Eu estava enfrentando o mesmo problema, resolvido usando o script da ferramenta "xcodebuild" da linha de comando, que vem pré-instalado com o Xcode 6 (não foi necessário reinstalar o Xcode 5).

http://www.thecave.com/2014/09/16/using-xcodebuild-to-export-a-ipa-from-an-archive/

Script no terminal:

xcodebuild -exportArchive -archivePath $projectname.xcarchive -exportPath $projectname -exportFormat ipa -exportProvisioningProfile 'Provisioning Profile Name'

Outras dicas

Tive um problema semelhante ao enviar para a App Store.Criei um arquivo, cliquei em "enviar" e o Xcode queria assinar automaticamente com o perfil de provisionamento curinga padrão "XC com.*" em vez do perfil explícito que já tinha.

Para corrigir isso, acabei de gerar novamente o perfil no Apple Developer Portal:

1) Acesse developer.apple.com e encontre o perfil de provisionamento de distribuição que deseja usar.
2) Selecione-o, clique em “Editar”, renomeie o perfil e clique em “Gerar”.
3) Baixe o perfil de provisionamento para a área de trabalho e arraste-o para o ícone do Xcode 6.
4) Reinicie o Xcode 6.
5) Abra a janela do organizador e clique em “Enviar” no arquivo que você construiu.O Xcode escolherá automaticamente seu perfil explícito em vez do genérico.

Quando estiver no Organizador

  • Selecione a compilação ad-hoc e clique em "Exportar...."
  • Selecione "Salvar para implantação ad hoc" -> Próximo
  • Em vez de selecionar uma organização no menu suspenso, selecione "Usar recurso de assinatura local" -> Escolha
  • Exporte e salve .ipa como antes.

É claro que você precisa ter gerado, baixado e instalado o perfil de provisionamento ad-hoc.

Parece que o último perfil de provisionamento gerado vence agora.Então você pode simplesmente gerar novamente o perfil desejado e baixá-lo e o Xcode irá usá-lo.

Uma abordagem um pouco melhor:defina o perfil prov desejado em seu destino e use a linha de comando para construir seu ipa, isso também funciona.

Aqui está o script que estou usando:

#!/bin/sh

# Current as working as of 2014/09/22
# Xcode 6

OUTPUTDIR="$HOME/build"
APPNAME="your-app"
SCHEME="your-app"
APP_WORKSPACE="$HOME/Path/To/your-app.xcworkspace"

rm "$OUTPUTDIR/$APPNAME.ipa" #deletes previous ipa
xcodebuild -workspace "$APP_WORKSPACE" -scheme "$SCHEME" archive -archivePath "$OUTPUTDIR/$APPNAME.xcarchive"
xcodebuild -exportArchive -exportFormat ipa -archivePath "$OUTPUTDIR/$APPNAME.xcarchive" -exportPath "$OUTPUTDIR/$APPNAME.ipa" 

e minhas configurações:

Xcode settings

Eu também não consegui descobrir isso - fui afetado ao enviar para a AppStore, onde o padrão era um perfil curinga.

Acabei construindo no Xcode 6 e depois voltando para a janela do Organizer do Xcode 5 para o envio.Dessa forma, você será solicitado a escolher um perfil para assinar.

No Xcode 6 (pelo menos 6.1 que estou usando agora) quando você estiver fazendo a exportação para ad hoc, o xcode 6 irá verificar automaticamente se existe algum perfil de provisionamento que contenha todos os dispositivos registrados na conta do desenvolvedor e ao mesmo tempo corresponda ao ID do pacote .Se não, usará o perfil de provisionamento XC.Portanto, se quiser usar seu próprio perfil, por exemplo, para fins de notificação push, você precisará selecionar todos os dispositivos em seu perfil no portal do desenvolvedor da Apple.Acho que é por isso que algumas pessoas recriam o perfil e outras não.

aliás, usar o script pode exportar e fazer upload para testflight, mas o dispositivo simplesmente não consegue fazer o download.provavelmente em algum lugar eu me enganei.se alguém souber por que isso acontece, por favor me avise.obrigado

Isso funcionou para mim:

  1. Clique em "View Contas .." dentro do "selecione uma equipe de desenvolvimento ..".
  2. clique em "Ver detalhes.." e encontre o perfil de provisionamento XC Ad Hoc.
  3. clique com o botão direito nesse perfil e escolha "Mostrar no Finder".
  4. exclua o perfil selecionado.
  5. volte para a caixa de diálogo na etapa 1.
  6. clique em "Escolher".
  7. Clique na seta perto do perfil de provisionamento para abrir o diretório de perfis de provisionamento.
  8. exclua novamente o perfil genérico como na etapa 4.
  9. clique no botão "Anterior" na caixa de diálogo "Enviar [nome do aplicativo] para a Apple:".
  10. selecione novamente "Salvar para implantação ad hoc"
  11. clique novamente no botão "escolher".

agora você deverá ver o nome correto do perfil de provisionamento.

Eu tenho uma solução alternativa para isso que funciona para mim.

Tenho o Xcode 6 e o ​​Xcode 5.1.1 instalados, o Xcode 6 está em Aplicativos e o Xcode 5.1.1 está em outro diretório.Quando quero fazer um build eu uso o Xcode 6 para criar o Archive.Mas você também pode ver o arquivo criado no Xcode 5.1.1, então eu uso o Xcode 5.1.1 para distribuir o Ad Hoc .ipa usando o perfil de provisionamento que desejo usar.Portanto, construa usando o Xcode 6, mas distribua usando o Xcode 5.1.1.

Usar ativos de assinatura local durante a exportação resolveu o problema para mim:enter image description here

A resposta do @MrPatol não funcionou para mim.Meu cenário de trabalho para o Xcode 6.3.2

No Centro de Membros -> Perfis de provisionamento de iOS

  • Exclua o perfil de provisionamento que foi definido por padrão quando você estava tentando criar o aplicativo (por exemplo,"XC...").Crie um perfil de provisionamento ad hoc (não de produção) com um nome abreviado.

No Utilitário de configuração do iPhone -> Perfis de provisionamento

  • Exclua o mesmo perfil de provisionamento (por exemplo,"XC...")

No Xcode -> Organizador

  • Selecione a compilação ad -hoc e clique em "Exportar ...." Selecionar "Salvar para implantação ad hoc" -> Next
  • Selecione uma organização no menu suspenso
  • Verifique se seu novo perfil de provisionamento ad hoc foi selecionado automaticamente
  • Exporte e salve .ipa como antes.

Aqui estão os dois pontos principais que resolveram o problema para mim.

  • Ao gerar o perfil de provisionamento, ele precisa estar vinculado a um ID explícito do aplicativo que usa o mesmo identificador de pacote do seu aplicativo.Um ID de aplicativo curinga não funcionará.
  • Ao exportar o aplicativo para implantação ad hoc, selecione Use recurso de assinatura local no menu suspenso e clique em Escolher.

O Xcode encontrará então o perfil de provisionamento correto combinando o ID do aplicativo com o identificador do pacote do aplicativo.

Na verdade, você precisa criar um novo perfil de distribuição, específico para implantação ad hoc.Isso pode ser encontrado no centro de membros clássico, mas é um novo tipo de certificado.

Você pode então selecionar quais dispositivos podem ser usados ​​para testar o aplicativo, como faria com um perfil de desenvolvedor.

E o certificado recém-criado estará disponível quando você exportar seu pacote do Organizador da maneira usual.

Alternativamente, você pode usar a solução TestFlight fornecida pela Apple com iOS 8 para permitir que seu usuário tenha acesso ao pré-lançamento.

enter image description here

Tive o mesmo problema, finalmente resolvi regenerando o perfil que queria usar no Xcode 6 incluindo todos os dispositivos que tenho cadastrado na minha conta iOS Dev, fazendo assim, ao selecionar exportar mostra o perfil correto e eu pode fazer a exportação Ad Hoc com o Xcode 6 sem usar um script.Espero que ajude.

Estou preso há um tempo com isso, mas usando Crashlytics resolvido, construa distribuído usando o perfil selecionado nas configurações de compilação do seu projeto Xcode.

espero que ajude alguém.

Quase o mesmo problema.Após criar um arquivo para distribuição (Produto > Arquivo), você exporta o arquivo (clique em Exportar...) e escolha "Salvar para implantação empresarial";Então o próximo".Em seguida, você seleciona o padrão "Equipe de Desenvolvimento" (por exemplo,nome da organização) e clique em "Escolher".Por fim, será apresentada uma visualização resumida que também lista o perfil de provisionamento que o Xcode encontrou automaticamente (talvez criado dinamicamente) para você.Este PODE ser o perfil de provisionamento errado (normalmente um perfil de provisionamento curinga, como "XC:*") e PODE estar acontecendo porque já existe um perfil de provisionamento curinga no portal do desenvolvedor.O perfil de provisionamento curinga PODE ser usado por outro projeto mais antigo e talvez não seja aconselhável apenas remover o perfil de provisionamento curinga do portal do desenvolvedor.

Usei um ticket de suporte para isso e só recebi esse link de volta https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/ConfigurandoPushNotifications/ConfigurandoPushNotifications.html#//apple_ref/doc/uid/TP40012582-CH32-SW1.Não é realmente uma grande ajuda.

Eu descobri isso MrPatolA solução de também funciona para Implantação Empresarial também e resolve o problema para nós.Primeiro entrei no portal do desenvolvedor e criei manualmente um perfil de provisionamento adequado ao meu aplicativo.Em seguida, baixei e instalei o novo perfil de provisionamento criado manualmente.

No xcode 7, não consegui escolher o provisionamento adhoc via

Organizador -> Fazer upload para App Store e Organizador -> Validar

Mas eu poderia escolher via Organizador -> Exportar

Editado:

O upload do aplicativo após a exportação para adhoc para a app store para testFlight causou outro problema discutido aqui.Portanto, a solução para ambos os problemas é uma só. Crie o provisionamento da AppStore para poder selecioná-lo por meio do organizador e utilizar o testFlight fazendo upload para a appstore.

  1. Acho que é a maneira certa de especificar uma opção -exportOptionsPlist após o Xcode 7.Ele escolherá os arquivos de provisionamento corretos, como na exportação da GUI, independentemente do que você especificar na configuração do projeto.

xcodebuild -exportArchive -archivePath $Archive_Caminho -exportPath $LOCAL_PACKAGE_DIR -exportOptionsPlist $Export_Plist_Path

O arquivo optionPlist é assim,

<dict>
  <key>teamID</key>
        <string>MYTEAMID123</string>
        <key> teamID </key>
        <string>app-store</string>
        <key>uploadSymbols</key>
        <true/>
</dict>


<plist>

app-store, empresa, ad-hoc, desenvolvimento são alternativas

  1. Mas você pode encontrar outro erro acima.

Error Domain=IDEDistributionErrorDomain Code=14 "Não aplicável dispositivos encontrados." UserInfo={NSLocalizedDescription=Nenhum dispositivo aplicável encontrado.}

É um problema de rubi.Experimente este script de shell, xcbuild-safe.sh

xcbuild-safe.sh xxxxNormalOptionsInXcodebuild bla...
  1. Espere um momento, outro erro estranho ocorre.

xcbuild-safe.sh:linha 62:shell_session_update:comando não encontrado

O que é isso? shell_session_update ?Vamos contornar isso.Basta definir uma função antes do cmd real do xcodebuild, ou seja, na linha 60 ou 61.

function shell_session_update() { :; }

Em resposta à sua pergunta específica, não, não há como selecionar o perfil de provisionamento a ser usado.O que você está tentando fazer?(ou seja,o que o perfil que você deseja selecionar permite que o gerado automaticamente não o faça?)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top