Como implantar um aplicativo para iPhone do Xcode em um dispositivo real para iPhone?

157

Como implantar um aplicativo para iPhone do Xcode no dispositivo real do iPhone sem ter um certificado Apple de US $ 99?

DFG
fonte
Veja esta resposta a uma pergunta que pedi anteriormente, um guia muito bom sobre como colocá-lo no seu iPhone com jailbreak.
Dan Walker
2
O Xcode 7 tem provisionamento gratuito agora, portanto, não há necessidade de se inscrever em uma conta de desenvolvedor da Apple para testar aplicativos em um dispositivo real. Veja esta resposta para mais detalhes.
Suragch 26/11/2015

Respostas:

56

Parece que o aplicativo não está assinado. Baixe o ldid do Cydia e use-o da seguinte forma:ldid -S /Applications/AccelerometerGraph.app/AccelerometerGraph

Verifique também se o binário está marcado como executável: chmod +x /Applications/AccelerometerGraph.app/AccelerometerGraph

rpetrich
fonte
3
Sim, você precisará fazer o jailbreak do seu dispositivo para que esse método funcione. (obviamente)
esqew
como você inicia o comando ldid -S ...? você precisa de um console SSH para isso? existe alguma maneira gratuita de obter um cliente SSH em um iPhone com jailbreak?
Dan Leahu
tanderson: existe um pacote ldid no Cydia e você pode compilar um para o OS X
rpetrich
rpetrich Eu acredito que suas perguntas são como digitar e usar o comando, não como adquirir o pacote. @tanderson, você pode acessar o Open SSH (e depois se conectar ao telefone a partir da área de trabalho) ou um terminal dentro do próprio iPhone. Ambos os aplicativos são downloads gratuitos do Cydia . Com o SSH, você tem a vantagem de também poder usá-lo para simplesmente copiar seu aplicativo para o telefone. Se você fizer muito isso, verifique as outras respostas - você pode fazer o XCode fazer todo o trabalho com você, mas é um procedimento problemático para enganá-lo.
Cregox #
92

Eu usei uma mistura de dois howtos: Jason e Alex . Com o segundo, temos a vantagem de poder depurar. Vou copiar apenas os dois abaixo (e simplificar o alex):

Atualização em janeiro de 2012: isso ainda funciona no SDK 4.2.1 e no iOS 5.0.1 - Acabei de testar tudo em um novo computador e dispositivo!


1. Criar certificado autoassinado

Aplique patches no iPhone SDK para permitir o uso deste certificado:

  1. Inicie o Keychain Access.app. Sem itens selecionados, no menu Chaveiro, selecione Assistente de certificado e, em seguida, Criar um certificado.

    • Nome: iPhone Developer
    • Tipo de certificado: assinatura de código
    • Deixe-me substituir os padrões: Sim
  2. Clique em Continuar.

    • Validade: 3650 dias
  3. Clique em Continuar.

  4. Esvazie o campo Endereço de email .

  5. Clique em Continuar até concluir .

    Você deverá ver "Este certificado raiz não é confiável" . Isso é esperado.

  6. Defina o iPhone SDK para permitir que o certificado autoassinado seja usado:

    sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' /Developer/Platforms/iPhoneOS.platform/Info.plist

    Se você tiver o Xcode aberto, reinicie-o para que essa alteração entre em vigor.

E se você estiver no iOS 5, é isso! Tente agora! Pode não permitir a depuração, mas o aplicativo estará lá!

Fiquei muito surpreso com isso, porque, como você deve saber , não tenho idéia do que são todos esses truques! Tudo o que fiz foi melhorar um pouco o que encontrei em outros lugares, como apontei.

Então, sim, todo o método não funciona mais da mesma maneira e eu não me incomodei em encontrar um novo ... Exceto por isso, que usa uma ferramenta chamada Theos, mas não pude passar por todo o processo.

Por fim, se você precisar desinstalá-lo por qualquer motivo, verifique o final desta postagem. No meu caso, eu tive que fazê-lo porque não conseguia descobrir por que todo esse método azul parou de funcionar e não aguentava mais, pois já temos a licença há muito esperada. (O número DUNS em pânico leva tanto tempo ...)

.

.


.

.

.

2. Habilite o Xcode para construir no dispositivo com jailbreak

  1. No seu iPhone com jailbreak, instale o aplicativo AppSync adicionando fonte ** http://repo.hackyouriphone.org **

  2. Remova os requisitos do SDK para assinatura e direitos de código (estou adorando sed !):

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
  3. Preste atenção naiPhoneOS5.0.sdkpeça. Se você estiver, por exemplo, usando o iOS 4.2 SDK, substitua-o de acordo:

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist
  4. Conclua a remoção do requisito através do patch do Xcode. Isso significa edição binária:

    cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
    printf "\xc3\x26\x00\x00" >> working
    /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
    /bin/mv working iPhoneOS\ Build\ System\ Support
    chmod a+x iPhoneOS\ Build\ System\ Support

    Se você tiver o Xcode aberto, reinicie-o para que essa alteração (e a última) entre em vigor.

  5. Abra "Projeto> Editar configurações do projeto" (no menu). Clique na aba "Build" . Localize "Identidade de assinatura de código" e seu filho "Qualquer dispositivo iPhoneOS" na lista e defina ambos na entrada "Não assinar código" :

    texto alternativo

    Depois disso, sinta-se à vontade para desfazer a etapa 3. Pelo menos no meu caso, tudo correu bem.

  6. Configurando o Xcode para assinar o código com nosso certificado autoassinado personalizado (o primeiro tutorial). Esta etapa provavelmente pode ser ignorada se você não desejar depurar:

    mkdir /Developer/iphoneentitlements401
    cd /Developer/iphoneentitlements401
    curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
    mv gen_entitlements.txt gen_entitlements.py
    chmod 777 gen_entitlements.py

    Conecte seu iPhone e abra o Xcode. Abra Janela> Organizador. Selecione o dispositivo na lista do lado esquerdo e clique em "Usar para desenvolvimento". Você será solicitado a entrar no site de provisionamento, clique em cancelar. Ele existe para facilitar o provisionamento legítimo, mas não dificulta o provisionamento ilegítimo.

    Agora você deve fazer esta última parte para cada novo projeto que criar . Vá para o menu Projeto> Nova Fase de Construção> Nova Fase de Construção do Script de Execução. Na janela, copie / cole isto:

    export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    /Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
    codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
    fi

.

.


.

.

Desinstalando

Para a 1ª parte:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Info.plist.bak /Developer/Platforms/iPhoneOS.platform/Info.plist

Para a 2ª parte:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
sudo mv -f iPhoneOS\ Build\ System\ Support.original iPhoneOS\ Build\ System\ Support

caso você tenha executado a etapa 3 em vez de 2, simplesmente modifique-a adequadamente:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist

para o resto, basta reverter o que você fez no XCode e excluir /Developer/iphoneentitlements401/gen_entitlements.pyse desejar:

sudo rm -f /Developer/iphoneentitlements401/gen_entitlements.py
cregox
fonte
Tentei seguir estas instruções, mas agora 'Scheme' é do tipo My Mac 64 bits, e não tenho mais opção de executar o simulador ou o iPhone real, por isso não posso nem testar o código. Eu estava usando o SDK 4.3, não tenho certeza se o que importa
nosatalian
1
Na verdade, atualize: depois de alterar o SDK base nas configurações do projeto do iphone para o iOS 4.3, as coisas funcionam. Embora o xcode diga 'Erro ao iniciar o programa remoto: falha ao obter a tarefa para o processo', posso iniciar o aplicativo clicando nele.
nosatalian 10/08/11
1
Eu recebo este erro: The identity used to sign the executable is no longer valid. ... (0xE8008018) Mesmo quando eu expiro 3650 dias. Parece que o telefone está fazendo uma verificação.
Stephen
faz isso "remendar XCode" trabalho truque para 4.3.2 ou que vai quebrou
Gabor
1
Ponto 6. No meu caso, tive que alterar as permissões do arquivo /Developer/iphoneentitlements401/gen_entitlements.py para que o usuário normal o executasse. Com isso, o procedimento funciona perfeitamente.
Abidibo 19/07/2012
43

Provisionamento gratuito após o Xcode 7

Para testar seu aplicativo em um dispositivo real, em vez de pagar a taxa de desenvolvedor da Apple (ou fazer o jailbreak do seu dispositivo), você pode usar o novo provisionamento gratuito suportado pelo Xcode 7 e iOS 9.

Aqui estão as etapas realizadas mais ou menos a partir da documentação (o que é muito bom, então leia-o):

1. Adicione seu ID Apple no Xcode

Vá para XCode> Preferências> guia Contas> botão Adicionar (+)> Adicionar ID Apple. Consulte os documentos para obter mais ajuda.

insira a descrição da imagem aqui

2. Clique na guia Geral no Project Navigator

insira a descrição da imagem aqui

3. Escolha seu ID Apple no menu pop-up da equipe.

insira a descrição da imagem aqui

4. Conecte seu dispositivo e escolha-o no menu de esquema.

insira a descrição da imagem aqui

5. Clique no botão Corrigir problemas

insira a descrição da imagem aqui

Se você receber um erro sobre o nome do pacote inválido, altere-o para algo único.

6. Execute seu aplicativo

No Xcode, clique no botão Compilar e executar.

insira a descrição da imagem aqui

7. Confie no desenvolvedor do aplicativo nas configurações do dispositivo

Após a execução do aplicativo, você receberá um erro de segurança porque o aplicativo que você deseja executar não é da App Store.

insira a descrição da imagem aqui

No seu dispositivo , vá para Configurações> Geral> Perfil> seu-Apple-ID-name > Confie em seu-Apple-ID-name > Confiar.

8. Execute seu aplicativo no seu dispositivo novamente.

É isso aí. Agora você pode executar seu próprio (ou qualquer outro aplicativo para o qual tenha o código-fonte) sem precisar gastar os US $ 99. Obrigado, Apple, por finalmente permitir isso.

Suragch
fonte
1
Muito obrigado. isso funcionou perfeitamente sem a licença paga de desenvolvedor da Apple.
precisa saber é o seguinte
No entanto, isso tem alguns problemas - você só pode instalar até três aplicativos por vez e precisa renovar o certificado a cada semana.
SilverWolf - Restabelece Monica
@seaturtle, obrigado pela atualização. Por fim, paguei o dinheiro da licença de desenvolvedor, por isso não me atualizei com esta resposta. Isso é muito ruim sobre as limitações. Existem algumas coisas sobre o Android que são muito melhores que a Apple.
Suragch 07/02
9

Você não pode, não se estiver falando de aplicativos criados com o SDK oficial e implantando diretamente do xcode.

micmcg
fonte
8

Você terá que fazer o jailbreak do seu dispositivo.

Can Berk Güder
fonte
1
Siga o método do @ rpetrich e faça o SSH do executável na pasta / Aplicativos do dispositivo. Ele deve funcionar após uma reinicialização / mola.
esqew
6

Existe uma maneira de implantar aplicativos para iPhone sem pagar à Apple. Você precisará fazer o jailbreak do seu dispositivo e seguir as instruções em http://www.alexwhittemore.com/?p=398

Leo
fonte
também um guia perfeito, com uma abordagem diferente da @Dan ... Eu usei os dois.
Cregox
5

Nada do que vi em qualquer lugar indica que você pode implantar ad-hoc em um iPhone real sem um certificado (pago).

Matthew Phillips
fonte
4

Eu estava passando pelo desenvolvedor da Apple ontem à noite e lá no certificado de provisionamento encontrei algo como - "Membros da equipe de assinatura". Eu acho que existe uma maneira de adicionar membros da equipe ao perfil pago. Você pode simplesmente pedir ao proprietário do ID do aplicativo (pago) para adicionar você como membro da equipe. Não tenho certeza. Ainda procurando por isso.

Akshay
fonte
Sim, você pode adicionar membros da equipe. Há um limite de 200 dispositivos por ano.
cregox
Cawas - Você sabe como adicionar um membro ao seu ID de maçã?
Akshay
só recebemos notificações se você adicionar o @ antes do nome. Como você mesmo disse, primeiro é necessário obter uma conta paga. Então deve ser bem simples, porque não consegui encontrar nenhum tutorial sobre como fazê-lo. Eu nunca fiz isso sozinho.
Cregox
3

Não, é fácil fazer isso. No Xcode, defina a Configuração ativa como Release. Mude o dispositivo de Simulador para Dispositivo - qualquer SDK. Se você deseja exportar diretamente para o seu iPhone, conecte-o ao seu computador. Pressione Build and Go. Se o seu iPhone não estiver conectado ao seu computador, será exibida uma mensagem dizendo que o seu iPhone não está conectado.

Se isso se aplica a você: (o iPhone não estava conectado)

Vá para a pasta de projetos e depois para a pasta de compilação dentro. Vá para a pasta Release-iphoneos e leve o aplicativo para dentro, arraste e solte no ícone do iTunes. Quando você sincroniza seu dispositivo iTouch, ele é copiado para o seu dispositivo. Ele também aparecerá no iTunes como um aplicativo para o iPhone.

Espero que isto ajude!

PS: Se diz algo sobre a validade de um certificado, basta clicar no projeto no Xcode, o pequeno ícone do projeto na pilha de arquivos à esquerda, e pressionar Apple + I ou obter informações na barra de menus. Clique em Build na parte superior. Em Assinatura de código, altere a Identidade de assinatura de código - Qualquer dispositivo iPhone OS a ser não assina.

cdespinosa
fonte
7
O OP não possui um certificado de assinatura ou perfil de provisionamento. Essas instruções são para membros se o Programa para desenvolvedores do iPhone de US $ 99,00, mas não abordarem a questão de como executar no dispositivo sem se inscrever no programa.
Cdespinosa
2

Isso realmente depende da versão do Xcode que você está usando, pois diferentes versões usam métodos diferentes para implantar no seu iPhone sem um perfil de provisionamento.

O Xcode 3.2.1 é uma versão boa e fácil de resolver, mas precisamos saber qual versão você está usando.

Magnatek
fonte
2

A solução publicada por Cawas também funciona perfeitamente com o XCode4. No entanto, existem algumas alterações na interface do usuário do IDE, portanto, você precisa fazer algumas pesquisas para encontrar o Run Script :)

Na visualização Navegador de Projeto, clique no item raiz do projeto e, na janela do meio, selecione Destino, clique na guia Fases de Construção e, na parte inferior, você verá o botão Adicionar Fase de Construção, clique em e selecione Adicionar Script de Execução, depois cole "codesign "script postado por Cawas.

Gobol
fonte
1

Não há solução alternativa. Você só pode implantar aplicativos ad hoc se eles estiverem registrados no seu dispositivo. Isso impede que você construa sua própria loja de aplicativos.


fonte