Nome do perfil de provisionamento usado para assinar um aplicativo para iPhone?
-
22-09-2019 - |
Pergunta
Eu escrevi um script que usa xcodebuild
Para gerar uma construção do ADHOC de um aplicativo para iPhone.
Eu gostaria de editar este script para produzir o nome do Perfil provisório usado para assinar a construção.
Isso me permitiria incluir o perfil de provisionamento no ZIP gerado automaticamente. Dessa forma, eu poderia enviar automaticamente o arquivo para os testadores do ADHOC e verifique se eles têm o perfil de provisionamento certo para instalar o aplicativo.
Existe alguma maneira de Extrair o nome ou arquivo do perfil de provisionamento usado para assinar o aplicativo:
- A partir do aplicativo construído e assinado
- No projeto Xcode (não quero analisar manualmente o arquivo Project.pbxProj, pois essa solução pode quebrar na próxima atualização do Xcode)
- qualquer outra maneira que seja scriptable
imperdoável sugerido Para usar o comando security
Para obter o nome do certificado usado para assinar o aplicativo. Depois de ter essas informações, existe alguma maneira de encontrar o nome do perfil de provisionamento?
Aqui está o que eu tentei:
Infelizmente, a saída do XCodeBuild durante a construção não contém essas informações. Durante a etapa do código, há a linha:
/usr/bin/codesign -f -s "iPhone Distribution: My name" ...
Mas não posso combinar isso com um certificado.
Eu olhei para usar o código e o comando
/usr/bin/codesign -d -vvv --entitlements - -r - /Users/lv/Desktop/TicTacBoo.app/TicTacBooParecia promissor, mas isso não me fornece as informações de que preciso.
Também não encontrei nenhuma opção útil no XCodeBuild.
Solução
O perfil de provisionamento já está dentro a aplicação. Você não precisa de outra cópia no seu arquivo zip (a menos que seus testadores não entendam como usar a cópia dentro do aplicativo.)
É nomeado YourApplication.app/embedded.mobileprovision
Isso não responde à sua pergunta porque o nome do arquivo original está perdido, no entanto, parece resolver seu maior problema.
Outras dicas
Você pode usar o comando "segurança" do terminal; Infelizmente, pelo menos no meu MBP com o Snow Leopard, parece causar uma falha de segmentação em um dos comandos que você precisa emitir. Para mais informações, emitir do terminal
man security
De qualquer forma, aqui está o que você pode tentar, assumindo que seus certificados de desenvolvimento/produção sejam armazenados no chaveiro de login:
security unlock-keychain login.keychain;
security find-certificate -a -c "iPhone Distribution: Your name" -p > cert.pem;
O segundo comando causa a falha de segmentação (causada pelo argumento -c), mas deve ser exatamente o que você precisa. Alternativamente, você pode usar
security find-identity -p codesigning -v;
Para obter uma lista de todos os certificados válidos que você pode usar para codificar seus aplicativos. Para cada certificado, a saída também contém o SHA1 Message Digest, para que você possa pesquisar facilmente o certificado no chaveiro que corresponde ao SHA1 Digest associado à "distribuição do iPhone: seu nome". No entanto, isso exige que você escreva seu próprio aplicativo usando as APIs do chaveiro.
Deixe -me saber se isso funcionar no seu Mac ou se você tiver o mesmo problema de falha de segmentação.
Editar/atualizar: Verifiquei o bug em outras máquinas e arquivei um bug na Apple.
Que tal procurar no arquivo _codesignature/codeResources Plist (do aplicativo construído) para arquivos do tipo "MobileProvision"?
Aqui está uma maneira de fazer isso usando padrões (1) para ler o arquivo Plist. Você deve copiar o arquivo coderesources para algo com o sufixo ".plista" para manter os padrões felizes ...
cp /build/Distribution-iphoneos/MyApp.app/_CodeSignature/CodeResources /tmp/defaults.plist
defaults read /tmp/defaults files |grep .mobileprovision |grep -v embedded.mobileprovision
(No meu caso de teste, houve 2.