App per iPhone meno App Store?


199

Se creo un'applicazione sul mio Mac, esiste un modo per farlo funzionare su un iPhone senza passare attraverso l'app store?

Non importa se l'iPhone deve essere sottoposto a jailbreak, purché sia ​​ancora possibile eseguire un'applicazione creata utilizzando l'SDK ufficiale. Per motivi che non mi interessano, non posso avere questo programma passare attraverso l'app store.


1
A partire da Xcode 7, è ora possibile eseguire un'app su un dispositivo connesso senza registrarsi per un account sviluppatore o eseguire il jailbreak del dispositivo. Vedi questa guida per i dettagli.
Suragch,

Puoi usare AppBox , un'applicazione mac che utilizza il tuo account Dropbox per distribuire app aziendali ad hoc. Prova qui github.com/vineetchoudhary/AppBox-iOSAppsWirelessInstallation/…
Vineet Choudhary

Risposte:


187

Programma ufficiale per gli sviluppatori

Per un iPhone standard dovrai pagare $ 99 all'anno per essere un membro del programma per sviluppatori. È quindi possibile utilizzare il sistema ad hoc per installare l'applicazione su un massimo di 100 dispositivi. Il programma per sviluppatori ha i dettagli ma comporta l'aggiunta di UUID per ciascuno dei dispositivi al pacchetto dell'applicazione. Gli UUID possono essere recuperati più facilmente utilizzando Ad Hoc Helper disponibile su App Store. Per ulteriori dettagli su questo metodo, vedere di Craig Hockenberry beta testing su iPhone 2.0 articolo

IPhone con jailbreak

Per gli iPhone con jailbreak, puoi utilizzare il seguente metodo che ho testato personalmente utilizzando l' app di esempio AccelerometerGraph su iPhone OS 3.0.

Crea certificato autofirmato

Per prima cosa dovrai creare un certificato autofirmato e patchare il tuo iPhone SDK per consentire l'uso di questo certificato:

  1. Avvia Keychain Access.app. Senza elementi selezionati, dal menu Portachiavi selezionare Assistente certificato, quindi Crea un certificato.

    Nome:
    Tipo di sviluppatore iPhone Certificato: Firma del codice
    Fammi sostituire le impostazioni predefinite: Sì

  2. Fai clic su Continua

    Validità: 3650 giorni

  3. Fai clic su Continua

  4. Svuota il campo Indirizzo e-mail.

  5. Fai clic su Continua fino al completamento.

    Dovresti vedere "Questo certificato radice non è attendibile". Questo è previsto.

  6. Imposta iPhone SDK per consentire l'utilizzo del certificato autofirmato:

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

    Se hai Xcode aperto, riavvialo per rendere effettive le modifiche.

Distribuzione manuale tramite WiFi

I seguenti passaggi richiedono opensshe uikittoolsdevono essere installati per primi. Sostituisci jasoniphone.localcon il nome host del dispositivo di destinazione. Assicurati di impostare la tua password su entrambi gli utenti mobilee rootdopo aver installato SSH.

Per compilare e installare manualmente l'applicazione sul telefono come app di sistema (ignorando il sistema di installazione di Apple):

  1. Progetto, Imposta SDK attivo, Dispositivo e Imposta configurazione build attiva, Rilascio.

  2. Compila il tuo progetto normalmente (usando Build, non Build & Go).

  3. Nella build/Release-iphoneosdirectory avrai un pacchetto di app. Usa il tuo metodo preferito per trasferirlo su / Applicazioni sul dispositivo.

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

  4. Fai sapere a SpringBoard che è stata installata la nuova applicazione:

    ssh mobile@jasoniphone.local uicache

    Questo deve essere fatto solo quando aggiungi o rimuovi applicazioni. Le applicazioni aggiornate devono solo essere riavviate.

Per semplificarti la vita durante lo sviluppo, puoi configurare l'autenticazione con chiave SSH e aggiungere questi passaggi aggiuntivi come passaggio di creazione personalizzato nel tuo progetto.

Nota che se desideri rimuovere l'applicazione in un secondo momento non puoi farlo tramite l'interfaccia SpringBoard standard e dovrai utilizzare SSH e aggiornare SpringBoard:

ssh root@jasoniphone.local rm -r /Applications/AccelerometerGraph.app &&
ssh mobile@jasoniphone.local uicache

2
Il mio non si costruirà - Xcode dà immediatamente un errore di firma del codice non appena provo a costruire ...
Devoto il

1
@ Rev316 uicachedovrebbe essere lì se hai installato il uikittoolspacchetto.
Jason Weathered

Sono seguirti ma incontrato questo errore: stackoverflow.com/questions/2161877/...
hungbm06

Inoltre, vuoi impostare una coppia di chiavi privata / pubblica su ssh per rendere le cose senza password
conradev

2
Che dire del profilo di provisioning? C'è un modo per ottenerne uno senza abbonarsi al programma per sviluppatori?
Teodor Kostov,

18

Sì, dopo aver aderito al Programma per sviluppatori iPhone e aver pagato Apple $ 99, puoi effettuare il provisioning delle tue applicazioni su un massimo di 100 dispositivi iOS.


2
Perché esiste un limite di 100 installazioni?
Marcus Leon,

25
Quindi le persone non possono usarlo come un modo per aggirare completamente l'App Store.
willc2,

2
E il limite di 100 viene conteggiato come il numero di dispositivi che hai registrato quell'anno sul portale di provisioning iOS, non come il numero attuale che hai. Quindi, se aggiungi 5 dispositivi e poi li elimini 5, hai 95 (non 100) più dispositivi che puoi aggiungere.
Scott C Wilson,

1
Ma il numero di dispositivi utilizzati si ripristina dopo il rinnovo del programma per sviluppatori.
dgund

1
E i profili di provisioning ad hoc scadono dopo 3 mesi, quindi non puoi distribuire in modo permanente le app anche al set limitato (100) di dispositivi che hai registrato.
Bogatyr,

14
  • Costruisci la tua app
  • Carica su un sito crack
  • (Se la tua app è abbastanza buona) la versione crack verrà pubblicata pochi minuti dopo e pronta per essere scaricata da tutti ;-)

8

Con l'aiuto di questo post , ho realizzato uno script che verrà installato tramite l'app Installous per una rapida distribuzione:

# 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

Ciò che manca nel post di cui sopra, è iTunesMetadata. Senza questo, Installous non installerà le app correttamente. Ecco un esempio di 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>

Ovviamente, sostituisci tutte le istanze di MyApp con il nome della tua app e MyCompany con il nome della tua azienda.

Fondamentalmente, questo verrà installato su qualsiasi dispositivo jailbroken con Installous installato. Dopo averlo impostato, questo si traduce in una distribuzione molto rapida, poiché può essere installato da qualsiasi luogo, è sufficiente caricarlo sul sito Web dell'azienda e scaricare il file direttamente sul dispositivo e copiarlo / spostarlo ~/Documents/Installous/Downloads.


@ToolmakerSteve ne dubito, ma visto che ora puoi caricare lateralmente le app iOS con qualsiasi ID Apple gratuitamente, non ne vedo la necessità.
Richard J. Ross III,

7

Con l'imminente Xcode 7 è ora possibile installare app sui dispositivi senza una licenza per sviluppatori Apple, quindi ora è possibile saltare l'app store e non è necessario eseguire il jailbreak del dispositivo.

Ora tutti possono ottenere la propria app sul proprio dispositivo Apple.

Xcode 7 e Swift ora rendono più semplice per tutti creare app ed eseguirle direttamente sui propri dispositivi Apple. Accedi semplicemente con il tuo ID Apple e trasforma la tua idea in un'app che puoi toccare su iPad, iPhone o Apple Watch. Scarica Xcode 7 beta e provalo tu stesso oggi. Non è richiesta l'iscrizione al programma.

Citato da: https://developer.apple.com/xcode/

Aggiornare:

XCode 7 è ora rilasciato:

Sviluppo gratuito su dispositivo Ora tutti possono eseguire e testare la propria app su un dispositivo, gratuitamente. Puoi eseguire ed eseguire il debug delle tue creazioni su un Mac, iPhone, iPad, iPod touch o Apple Watch senza alcuna commissione e senza programmi a cui partecipare. Tutto quello che devi fare è inserire il tuo ID Apple gratuito in Xcode. Puoi persino utilizzare lo stesso ID Apple che già usi per l'App Store o iTunes. Una volta perfezionata la tua app, il Programma per sviluppatori Apple può aiutarti a scaricarla sull'App Store.

Vedere Avvio dell'app su dispositivi per informazioni dettagliate sull'installazione e l'esecuzione sui dispositivi.


4

Vale la pena notare che se segui il percorso jailbreak, è possibile (probabilmente?) Che un aggiornamento del sistema operativo iPhone ucciderebbe la tua capacità di eseguire queste app. Vorrei seguire il percorso ufficiale e pagare $ 99 per ottenere l'autorizzazione. Oltre a non doverti preoccupare che le tue app vengano bloccate, hai anche l'opportunità (se lo desideri) di rilasciare le tue app sullo store.


2

Dopo aver copiato l'app sull'iPhone nel modo descritto da @Jason Weathered, assicurati di "chmod + x" dell'app, altrimenti non funzionerà.


1

* Modifiche / Note per farlo funzionare per Xcode 3.2.1 e iPhone SDK 3.1.2

Distribuzione manuale tramite WiFi

2) Assicurati di riavviare Xcode dopo aver modificato Info.plist

3) Il comando "uicache" non è stato trovato, usando killall -HUP SpringBoard ha funzionato bene per me.

A parte questo, posso confermare che funziona bene.

Gli utenti Mac, utilizzando PwnageTool 3.1.4, hanno funzionato perfettamente per il jailbreak (DL via torrent).


Ah. Grazie Jason, apprezzo il post ben documentato! Potrebbe voler menzionare l'installazione del pacchetto UIKit Tools di Cydia per i nodi di jailbreak come me.
Rev316,

1

Se esegui la patch /Developer/Platforms/iPhoneOS.platform/Info.pliste quindi provi a eseguire il debug di un'applicazione in esecuzione sul dispositivo utilizzando un profilo di provisioning di sviluppo reale di Apple, probabilmente non funzionerà. I sintomi sono strani messaggi di errore da com.apple.debugservere che è possibile utilizzare qualsiasi identificatore di bundle senza ottenere un errore durante la creazione in Xcode. La soluzione è ripristinare Info.plist.


0

Puoi usare AppBox , un'applicazione mac che utilizza il tuo account Dropbox per distribuire app ad hoc e aziendali, se desideri installare da qualsiasi altro browser.

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


Opzioni

Archivia e carica IPA

  • Basta selezionare Progetto / Area di lavoro per archiviare -> crea ipa -> carica ipa -> invia posta -> e spegni il mac

Carica solo IPA

  • Basta selezionare il file IPA per caricare ipa -> invia posta -> e spegni il mac

caratteristica

  • Mantieni lo stesso collegamento
    • Questa funzione manterrà lo stesso breve URL per tutti i futuri ipa caricati con lo stesso identificativo di bundle.
    • Se questa opzione è abilitata, puoi anche scaricare la build precedente con lo stesso URL.
  • Collegamento di distribuzione automatica dell'app e-mail
  • Spegnimento automatico del Mac dopo la distribuzione
  • Dimensione massima caricamento => Uguale alla memoria del tuo account Dropbox
  • Scadenza app caricata => Fino a quando non elimini dal tuo Dropbox
  • Installazioni per app => Illimitato
  • Pannello di controllo*

    * Sarà disponibile nella versione futura


AppBox vs Diawi

Immagine dello schermo

Carica IPA

Archivia e carica IPA

Caricamento IPA

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.