App para iPhone menos App Store?

199

Se eu criar um aplicativo no meu Mac, existe alguma maneira de executá-lo em um iPhone sem passar pela App Store?

Não importa se o iPhone precisa ser desbloqueado, desde que eu ainda possa executar um aplicativo criado usando o SDK oficial. Por razões pelas quais não vou entrar, não posso ter esse programa na App Store.

Dan Walker
fonte
1
A partir do Xcode 7, agora é possível executar um aplicativo em um dispositivo conectado sem se inscrever em uma conta de desenvolvedor ou fazer o jailbreak do dispositivo. Consulte este guia para obter detalhes.
Suragch 26/11/2015
Você pode usar o AppBox , um aplicativo para Mac que usa sua conta do Dropbox para distribuir aplicativos corporativos e ad-hoc. Experimente aqui github.com/vineetchoudhary/AppBox-iOSAppsWirelessInstallation/…
Vineet Choudhary

Respostas:

187

Programa oficial para desenvolvedores

Para um iPhone padrão, você precisará pagar US $ 99 / ano para ser um membro do programa de desenvolvedor. Você pode usar o sistema adhoc para instalar seu aplicativo em até 100 dispositivos. O programa do desenvolvedor tem os detalhes, mas envolve a adição de UUIDs para cada um dos dispositivos ao seu pacote de aplicativos. Os UUIDs podem ser recuperados com mais facilidade usando o Ad Hoc Helper disponível na App Store. Para obter mais detalhes sobre esse método, consulte o artigo Beta de Craig Hockenberry no iPhone 2.0 .

IPhone com jailbreak

Para iPhones com jailbreak, você pode usar o método a seguir que eu pessoalmente testei usando o aplicativo de exemplo AccelerometerGraph no iPhone OS 3.0.

Criar certificado autoassinado

Primeiro, você precisará criar um certificado autoassinado e corrigir o 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 / XCiPhoneOSCodeSignContext / XCCodeSignContext / '/Developer/Platforms/iPhoneOS.platform/Info.plist

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

Implantação manual por WiFi

As etapas a seguir requerem opensshe uikittoolsdevem ser instaladas primeiro. Substitua jasoniphone.localpelo nome do host do dispositivo de destino. Certifique-se de definir sua própria senha nos usuários mobilee rootdepois de instalar o SSH.

Para compilar e instalar manualmente seu aplicativo no telefone como um aplicativo de sistema (ignorando o sistema de instalação da Apple):

  1. Projeto, Definir SDK ativo, Dispositivo e Definir configuração de compilação ativa, Versão.

  2. Compile seu projeto normalmente (usando Build, não Build & Go).

  3. No build/Release-iphoneosdiretório, você terá um pacote de aplicativos. Use seu método preferido para transferir isso para / Aplicativos no dispositivo.

    scp -r AccelerometerGraph.app root@jasoniphone:/Applications/

  4. Informe o SpringBoard que o novo aplicativo foi instalado:

    ssh [email protected] uicache

    Isso só precisa ser feito quando você adiciona ou remove aplicativos. Aplicativos atualizados só precisam ser relançados.

Para facilitar a vida durante o desenvolvimento, você pode configurar a autenticação de chave SSH e adicionar essas etapas extras como uma etapa de compilação personalizada em seu projeto.

Observe que, se você deseja remover o aplicativo posteriormente, não poderá fazê-lo através da interface padrão do SpringBoard e precisará usar o SSH e atualizar o SpringBoard:

ssh root@jasoniphone.local rm -r /Applications/AccelerometerGraph.app &&
ssh mobile@jasoniphone.local uicache
Jason Weathered
fonte
2
O meu não vai construir - Xcode imediatamente dá um erro de assinatura de código assim que eu tentar construir ...
Devoted
1
@ Rev316 uicachedeve estar lá se você tiver o uikittoolspacote instalado.
Jason Weathered
Estou segui-lo, mas encontrou este erro: stackoverflow.com/questions/2161877/...
hungbm06
Além disso, você quer criar um par de chaves privada / pública sobre ssh para fazer as coisas sem senha
conradev
2
E o perfil de provisionamento? Existe uma maneira de obter um sem se inscrever no programa de desenvolvedor?
Teodor Kostov
18

Sim, depois de ingressar no iPhone Developer Program e pagar à Apple US $ 99, você pode provisionar seus aplicativos em até 100 dispositivos iOS.

Robert Höglund
fonte
2
Por que existe um limite de 100 instalações?
Marcus Leon
25
Portanto, as pessoas não podem usar isso como uma maneira de ignorar completamente a App Store.
willc2
2
E o limite de 100 é contado como o número de dispositivos que você registrou naquele ano no iOS Provisioning Portal, e não o número atual que você possui. Portanto, se você adicionar 5 dispositivos e excluir todos os 5, terá 95 (não 100) mais dispositivos que poderá adicionar.
Scott C Wilson
1
Mas o número de dispositivos usados ​​é redefinido depois que você renova seu programa de desenvolvedor.
dgund
1
E os perfis de provisionamento ad-hoc expiram em três meses, para que você não possa distribuir permanentemente os aplicativos, mesmo para o conjunto limitado (100) de dispositivos que você registrou.
Bogatyr
14
  • Crie seu aplicativo
  • Carregar em um site de crack
  • (Se o seu aplicativo for bom o suficiente), a versão do crack será publicada minutos depois e estará pronta para que todos possam baixar ;-)
Oh Ho
fonte
8

Com a ajuda deste post , criei um script que será instalado através do aplicativo Installous para rápida implantação:

# compress application.
/bin/mkdir -p $CONFIGURATION_BUILD_DIR/Payload
/bin/cp -R $CONFIGURATION_BUILD_DIR/MyApp.app $CONFIGURATION_BUILD_DIR/Payload
/bin/cp iTunesCrap/logo_itunes.png $CONFIGURATION_BUILD_DIR/iTunesArtwork
/bin/cp iTunesCrap/iTunesMetadata.plist $CONFIGURATION_BUILD_DIR/iTunesMetadata.plist

cd $CONFIGURATION_BUILD_DIR

# zip up the HelloWorld directory

/usr/bin/zip -r MyApp.ipa Payload iTunesArtwork iTunesMetadata.plist

O que está faltando na postagem mencionada acima é o iTunesMetadata. Sem isso, o Installous não instalará aplicativos corretamente. Aqui está um exemplo de iTunesMetadata:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>appleId</key>
    <string></string>
    <key>artistId</key>
    <integer>0</integer>
    <key>artistName</key>
    <string>MYCOMPANY</string>
    <key>buy-only</key>
    <true/>
    <key>buyParams</key>
    <string></string>
    <key>copyright</key>
    <string></string>
    <key>drmVersionNumber</key>
    <integer>0</integer>
    <key>fileExtension</key>
    <string>.app</string>
    <key>genre</key>
    <string></string>
    <key>genreId</key>
    <integer>0</integer>
    <key>itemId</key>
    <integer>0</integer>
    <key>itemName</key>
    <string>MYAPP</string>
    <key>kind</key>
    <string>software</string>
    <key>playlistArtistName</key>
    <string>MYCOMPANY</string>
    <key>playlistName</key>
    <string>MYAPP</string>
    <key>price</key>
    <integer>0</integer>
    <key>priceDisplay</key>
    <string>nil</string>
    <key>rating</key>
    <dict>
        <key>content</key>
        <string></string>
        <key>label</key>
        <string>4+</string>
        <key>rank</key>
        <integer>100</integer>
        <key>system</key>
        <string>itunes-games</string>
    </dict>
    <key>releaseDate</key>
    <string>Sunday, December 12, 2010</string>
    <key>s</key>
    <integer>143441</integer>
    <key>softwareIcon57x57URL</key>
    <string></string>
    <key>softwareIconNeedsShine</key>
    <false/>
    <key>softwareSupportedDeviceIds</key>
    <array>
        <integer>1</integer>
    </array>
    <key>softwareVersionBundleId</key>
    <string>com.mycompany.myapp</string>
    <key>softwareVersionExternalIdentifier</key>
    <integer>0</integer>
    <key>softwareVersionExternalIdentifiers</key>
    <array>
        <integer>1466803</integer>
        <integer>1529132</integer>
        <integer>1602608</integer>
        <integer>1651681</integer>
        <integer>1750461</integer>
        <integer>1930253</integer>
        <integer>1961532</integer>
        <integer>1973932</integer>
        <integer>2026202</integer>
        <integer>2526384</integer>
        <integer>2641622</integer>
        <integer>2703653</integer>
    </array>
    <key>vendorId</key>
    <integer>0</integer>
    <key>versionRestrictions</key>
    <integer>0</integer>
</dict>
</plist>

Obviamente, substitua todas as instâncias do MyApp pelo nome do seu aplicativo e MyCompany pelo nome da sua empresa.

Basicamente, isso será instalado em qualquer dispositivo jailbroken com o Installous instalado. Após a configuração, isso resulta em uma implantação muito rápida, pois pode ser instalado de qualquer lugar, basta fazer o upload no site da empresa e fazer o download do arquivo diretamente no dispositivo, e copiar / mover para ~/Documents/Installous/Downloads.

Richard J. Ross III
fonte
@ToolmakerSteve Duvido, mas como agora você pode carregar aplicativos iOS com qualquer ID da Apple gratuitamente, não vejo a necessidade.
Richard J. Ross III
7

Com o próximo Xcode 7, agora é possível instalar aplicativos em seus dispositivos sem uma licença de desenvolvedor da Apple; portanto, agora é possível pular a loja de aplicativos e você não precisa fazer o jailbreak do seu dispositivo.

Agora todos podem ter seu aplicativo no dispositivo Apple.

O Xcode 7 e o Swift agora tornam mais fácil para todos criar aplicativos e executá-los diretamente em seus dispositivos Apple. Basta fazer login com seu ID da Apple e transformar sua ideia em um aplicativo que você possa tocar no seu iPad, iPhone ou Apple Watch. Faça o download do Xcode 7 beta e experimente você mesmo hoje. A associação ao programa não é necessária.

Citado em: https://developer.apple.com/xcode/

Atualizar:

O XCode 7 foi lançado:

Desenvolvimento gratuito no dispositivo Agora todos podem executar e testar seu próprio aplicativo em um dispositivo - de graça. Você pode executar e depurar suas próprias criações em um Mac, iPhone, iPad, iPod touch ou Apple Watch sem nenhuma taxa e sem programas para participar. Tudo o que você precisa fazer é inserir seu ID Apple gratuito no Xcode. Você pode até usar o mesmo ID Apple que você já usa para a App Store ou o iTunes. Depois de aperfeiçoar seu aplicativo, o Apple Developer Program pode ajudá-lo a obtê-lo na App Store.

Consulte Iniciando seu aplicativo em dispositivos para obter informações detalhadas sobre a instalação e a execução em dispositivos.

qqbenq
fonte
4

Vale a pena notar que, se você seguir o caminho do jailbreak, é possível (provável?) Que uma atualização do iPhone OS acabe com a capacidade de executar esses aplicativos. Eu seguia a rota oficial e pagava os US $ 99 para ser autorizado. Além de não precisar se preocupar com o excesso de aplicativos, você também terá a oportunidade (se desejar) de liberar seus aplicativos na loja.

agosto
fonte
2

Após copiar o aplicativo para o iPhone da maneira descrita por @Jason Weathered, certifique-se de "chmod + x" do aplicativo, caso contrário ele não será executado.

David Airapetyan
fonte
1

* Alterações / notas para fazer isso funcionar no Xcode 3.2.1 e no iPhone SDK 3.1.2

Implantação manual por WiFi

2) Certifique-se de reiniciar o Xcode depois de modificar o Info.plist

3) O comando "uicache" não foi encontrado, usando killall -HUP SpringBoard funcionou bem para mim.

Fora isso, posso confirmar que isso funciona bem.

Usuários de Mac, usando o PwnageTool 3.1.4, funcionaram muito bem no Jailbreaking (DL via torrent).

Rev316
fonte
Ah Obrigado Jason, Aprecie o post bem documentado! Pode-se mencionar a instalação do pacote UIKit Tools do Cydia para nubs Jailbreak como eu.
Rev316
1

Se você fizer um patch /Developer/Platforms/iPhoneOS.platform/Info.pliste tentar depurar um aplicativo em execução no dispositivo usando um perfil real de provisionamento de desenvolvimento da Apple, provavelmente não funcionará. Os sintomas são mensagens de erro estranhas com.apple.debugservere que você pode usar qualquer identificador de pacote sem obter um erro ao criar no Xcode. A solução é restaurar Info.plist.

Mattias Wadman
fonte
0

Você pode usar o AppBox , um aplicativo para Mac que usa sua conta do Dropbox para distribuir aplicativos corporativos e ad-hoc, se você deseja instalar a partir de qualquer outro navegador.

https://github.com/vineetchoudhary/AppBox-iOSAppsWirelessInstallation/releases


Opções

Arquivar e fazer upload de IPA

  • Basta selecionar Projeto / Área de trabalho para arquivar -> criar ipa -> carregar ipa -> enviar email -> e desligar mac

Carregar apenas IPA

  • Basta selecionar o arquivo IPA para fazer upload de ipa -> enviar email -> e desligar mac

Característica

  • Manter o mesmo link
    • Esse recurso manterá o mesmo URL curto para todos os ipa futuros carregados com o mesmo identificador de pacote.
    • Se essa opção estiver ativada, você também poderá fazer o download da compilação anterior com o mesmo URL.
  • Link de distribuição automática de aplicativos de email
  • Desligamento automático do Mac após a distribuição
  • Tamanho máximo de upload => Igual ao armazenamento da sua conta do Dropbox
  • Expiração do aplicativo carregado => Até você excluir do Dropbox
  • Instalações por aplicativo => Ilimitado
  • painel de controle*

    * Estará disponível na versão futura


AppBox vs Diawi

Captura de tela

Carregar IPA

Arquivar e fazer upload de IPA

Fazendo upload de IPA

Experimente aqui https://github.com/vineetchoudhary/AppBox-iOSAppsWirelessInstallation/releases

Vineet Choudhary
fonte