A assinatura de código é necessária para o tipo de produto Pacote de Teste de Unidade no SDK iOS 8.0

128

Obtendo

A assinatura de código é necessária para o tipo de produto 'Pacote de teste de unidade' no SDK 'iOS 8.0'

Meu destino de aplicativo é a assinatura de código muito bem - mas meu destino de teste não é. Comprei um novo computador, criei um novo certificado de desenvolvimento, atualizei o perfil de provisionamento de acordo, instalei os dois, mas não consigo passar por esse erro de assinatura de código.

Alguma maneira de limpar todos os certificados / perfis localmente para que eu possa reinstalar?

Provavelmente algum tipo de bug.

Spentak
fonte
Eu tive um erro semelhante - minha correção foi entrar nas configurações de compilação e selecionar os perfis de provisionamento, em vez de selecioná-los automaticamente.
scb998

Respostas:

129

O problema é que o projeto está sob controle de origem e toda vez que eu puxo o .xcodeproj é atualizado. E como meu perfil de provisionamento é diferente daquele no controle de origem, o destino do Teste de Unidade muda automaticamente para "Não assinar código". Então, eu simplesmente tenho que definir o perfil lá após cada puxar git.

Aparentemente, se estiver implantando em um dispositivo, se houver um destino de teste de unidade, ele deverá ter um código assinado.

Passos:

1) Altere o destino para o seu destino de teste (AppnameTests)

insira a descrição da imagem aqui

2) Verifique se "Identidade de assinatura de código" NÃO é "Não assine código". Escolha um perfil para assinar

insira a descrição da imagem aqui

Era tudo o que tinha que mudar para que funcionasse.

Spentak
fonte
Estou enfrentando o mesmo problema mencionado na pergunta acima, mas não consigo descobrir como resolvê-lo e postei uma pergunta sobre o mesmo. stackoverflow.com/questions/27312745/…
Neal
Você poderia me dizer um processo passo a passo sobre como fazê-lo.
Neal
Teve o problema no Xcode 8. A resolução não era idêntica à sua, mas próxima. Obrigado por me mostrar o caminho!
user3259235
Além disso, além de definir a 'Identidade de assinatura de código', talvez seja necessário definir a 'Equipe de desenvolvimento'.
bitsand 8/16
100

Corrigi o problema (temporariamente) acessando Editar esquema e, na seção Compilar, removendo meu destino de teste de unidade de ser chamado em "Executar".

ZS
fonte
1
Boa pegada! Por que você diz temporariamente ? Parece uma solução razoável para mim. Você enviou o aplicativo para a loja?
Mokagio
Não há problema em enviar o aplicativo para a App Store. Eu disse "temporariamente" porque achei que havia uma correção mais permanente possível, mexendo na assinatura de código, mas essa era a correção rápida e sem complicações.
ZS 4/12
2
Legal, obrigado. Parece uma boa solução para mim, o objetivo do teste de unidade não deve ser executado de qualquer maneira. 1
mokagio 04/04/19
Você pode me explicar mais detalhes? quer dizer que eu tenho que 'construir'? e eu não entendo 'remover meu teste de unidade de ser invocado em Run'
LKM
66

Os outros conselhos aqui não me ajudaram, mas eu corrigi esse erro indo para Product > Scheme > Edit Scheme. Em seguida, cliquei Buildno lado esquerdo e desmarquei todas as caixas de seleção próximas a AppNameTests. Estou usando o XCode 6.3

insira a descrição da imagem aqui

Olivia Stork
fonte
@Almo Não desmarque nenhuma caixa abaixo de "Teste", mas desmarque tudo (que você pode desmarcar) na linha denominada APPNAMEtests. Vou incluir uma captura de tela na minha resposta para ajudar a esclarecer.
Olivia Stork
1
Fiz isso e tive tudo desmarcado, exceto Teste. Descobri que eu tinha que remover um arquivo .plist para que ele parasse de tentar assinar o código no teste. Meu projeto cria uma biblioteca estática, portanto, nenhuma delas precisa ser assinada em código.
Almo
1
Ah! OK. Bem, com certeza parece que existem muitas razões pelas quais esse problema pode ser causado e tantas maneiras de corrigi-lo. Se ninguém mais mencionou sua solução, considere publicá-la como outra resposta possível.
Olivia Stork
3
@huggie ¯ \ _ (ツ) _ / ¯ Bem-vindo à programação do iOS!
Olivia Stork
1
@OliviaStork u me obrigou. muito obrigado por salvou meu trabalho.
Anurag Shrivastava
29

Corrigi-o selecionando manualmente um perfil de provisionamento nas configurações de construção para o destino de teste.

Teste as configurações de destino -> Configurações da compilação -> Assinatura de código -> Identidade do sinal de código. Anteriormente, era definido como "Não codifique sinal".

geada
fonte
A seleção do perfil de provisionamento funcionou explicitamente para mim, obrigado.
Mike Weller
Verifique também se o filtro "Todos" está selecionado na parte superior, não em "Básico".
11138 Marty
13

Além disso, se você definir o dispositivo de destino da compilação, o problema desaparecerá quando você testar e depurar. O código assinado é necessário apenas quando você tenta implantar seu aplicativo em um dispositivo realmente físicoFIG

Mudei o meu de "myIphone" para o simulador iPhone 6 Plus e ele resolve o problema enquanto estou desenvolvendo o aplicativo.

Ian Zhao
fonte
1
mas, e se você quiser implantar seu aplicativo em um dispositivo físico ±!
Marwen Trabelsi
8

No meu caso, o problema que enfrentei foi:

Erro de CodeSign: a assinatura de código é necessária para o tipo de produto 'Pacote de teste de unidade' no SDK 'iOS 8.4'

Felizmente, o destino não implementou nada, portanto, uma solução rápida é removê-lo.

insira a descrição da imagem aqui

Javier Calatrava Llavería
fonte
2

Eu estava recebendo esse erro ao executar o xcodebuild na linha de comando para testes de integração no IC do meu trabalho. Consegui fazê-lo funcionar, definindo a configuração no nível do projeto para o código de código. Por alguma razão, a configuração de destino estava sendo ignorada e revertida para a configuração do projeto.

Pellet
fonte
2

Se nada funcionar das soluções acima, siga estas etapas

Em Destinos, selecione appnameTests em "Informações"

Alterar a seguir

Identificador de pacote: com.ProjectName. $ (PRODUCT_NAME: rfc1034identifier)

para com.ProjectName.appname

Nome do pacote: $ (PRODUCT_NAME)

Nome do pacote: appname

Compilar e executar

nirvana74v
fonte
1

Resolvo o problema alterando o 'Perfil de provisionamento' na mesma seção ('Assinatura de código') de Automático para 'Nome de MyProvisioningProfile'

arniotaki
fonte
0

Oi, eu enfrento o mesmo problema hoje. Depois de ler a resposta de "Spentak", tentei fazer a assinatura de código do meu destino para definir o iOSDeveloper e ainda não funcionou. Mas, depois de alterar o "Perfil de provisionamento" para "Automático", o projeto foi criado e executado sem erros de assinatura de código.

Sahan Maldeniya
fonte
0

Às vezes, isso acontece quando você faz o download de um projeto no github ou em outros sites de tutoriais de terceiros. Esses aplicativos geralmente são assinados com uma identidade ou empresa / nome diferente. Quando isso acontece, se você não conseguir resolver a solução, basta criar um novo projeto xcode e copie todos os arquivos de cabeçalho e implementação em seu novo projeto.Também não esqueça os arquivos de dependência ... como os arquivos de estrutura. Isso funciona para mim.

BrainyMonkey
fonte