Come posso distribuire un'applicazione iPhone da Xcode a un dispositivo iPhone reale?
-
05-07-2019 - |
Domanda
Come posso distribuire un'applicazione iPhone da Xcode a un dispositivo iPhone reale senza avere un certificato Apple da $ 99?
Soluzione
Sembra che l'applicazione non sia firmata. Scarica ldid da Cydia e poi usalo in questo modo: ldid -S /Applications/AccelerometerGraph.app/AccelerometerGraph
Assicurati anche che il file binario sia contrassegnato come eseguibile: chmod + x /Applications/AccelerometerGraph.app/AccelerometerGraph
Altri suggerimenti
Ho usato un mix di due howtos: Jason's e alex's . Con il secondo abbiamo il vantaggio di poter eseguire il debug. Coprirò principalmente entrambi di seguito (e semplificherò quello di alex):
Aggiornamento gennaio 2012: funziona ancora su SDK 4.2.1 e iOS 5.0.1 - Ho appena testato tutto su un nuovo computer e dispositivo!
1. Crea certificato autofirmato
Patch l'SDK del tuo iPhone per consentire l'uso di questo certificato:
-
Avvia Keychain Access.app. Senza elementi selezionati, dal menu Portachiavi selezionare Assistente certificato, quindi Crea un certificato.
- Nome: Sviluppatore iPhone
- Tipo di certificato: Firma del codice
- Consentimi di ignorare le impostazioni predefinite: Sì
-
Fai clic su Continua
- Validità: 3650 giorni
-
Fai clic su Continua
Svuota il campo Email .
-
Fai clic su Continua fino al completamento .
Dovresti vedere " Questo certificato radice non è attendibile " . Questo è previsto.
-
Imposta l'SDK per iPhone 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 effettiva questa modifica.
E se sei su iOS 5, questo è tutto! Provalo ora! Potrebbe non consentire il debug, ma l'app sarà lì!
Ne sono rimasto molto sorpreso perché, come dovresti sapere , non ho idea di cosa siano tutti quegli hacker! Tutto quello che ho fatto è stato migliorare un po 'quello che ho trovato altrove, come ho indicato.
Quindi sì, il metodo intero non funziona più allo stesso modo e non potrei preoccuparmi di trovarne uno nuovo ... Tranne questo, che utilizza uno strumento chiamato Theos ma non ci sono riuscito l'intero processo.
Infine, se devi disinstallarlo per qualsiasi motivo, controlla la fine di questo post. Nel mio caso, dovevo farlo perché non riuscivo a capire perché tutto il blu dell'intero metodo smettesse di funzionare e non me ne potrebbe fregare più poiché abbiamo già la licenza tanto attesa. (Il numero di DUNS di Freaking richiede così tanto tempo ...)
.
.
.
.
.
2. Abilita Xcode per costruire su dispositivo jailbroken
-
Sul tuo iPhone con jailbreak, installa l'app AppSync aggiungendo la fonte ** http : //repo.hackyouriphone.org **
-
Rimuovi i requisiti dell'SDK per il segno di codice e le autorizzazioni (mi piace sed !):
sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
Presta attenzione alla parte
iPhoneOS5.0.sdk
. Se, ad esempio, stai utilizzando iOS 4.2 SDK, sostituiscilo di conseguenza:sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist
-
Concludere la rimozione dei requisiti tramite l'applicazione di patch a Xcode. Questo significa editing binario:
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 hai Xcode aperto, riavvialo per rendere effettiva questa modifica (e l'ultima).
-
Apri " Progetto > Modifica impostazioni progetto " (dal menu). Fai clic sulla scheda " Build " . Trova " Identificazione firma codice " e il relativo figlio " Qualsiasi dispositivo iPhoneOS " nell'elenco e imposta entrambi sulla voce " Don ' t Segno codice " :
Dopo questo, sentiti libero di annullare il passaggio 3. Almeno nel mio caso è andato tutto bene.
-
Impostando Xcode per firmare il codice con il nostro certificato autofirmato su misura (il primo how-to). Questo passaggio può probabilmente essere ignorato se non si desidera essere in grado di eseguire il debug:
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
Collega il tuo iPhone e apri Xcode. Apri finestra > Organizer. Seleziona il dispositivo dall'elenco a sinistra e fai clic su " Usa per sviluppo. & Quot; Ti verrà richiesto un accesso al sito Web di provisioning, fai clic su Annulla È lì per facilitare il provisioning legittimo, ma non rende più difficile il non provisioning illegale.
Ora Devi fare quest'ultima parte per ogni nuovo progetto che realizzi . Vai al menu Progetto > Nuova fase di costruzione > Nuova fase di creazione dello script di esecuzione. Nella finestra, copia / incolla questo:
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
.
.
.
.
La disinstallazione
Per la prima parte:
sudo mv -f /Developer/Platforms/iPhoneOS.platform/Info.plist.bak /Developer/Platforms/iPhoneOS.platform/Info.plist
Per la seconda 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
nel caso in cui tu abbia fatto il passaggio 3 invece di 2, semplicemente modificalo di conseguenza:
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
per il resto, sta semplicemente ripristinando ciò che hai fatto su XCode ed eliminando /Developer/iphoneentitlements401/gen_entitlements.py
se vuoi:
sudo rm -f /Developer/iphoneentitlements401/gen_entitlements.py
Provisioning gratuito dopo Xcode 7
Per testare la tua app su un dispositivo reale anziché pagare la quota di Apple Developer (o effettuare il jailbreak del dispositivo), puoi utilizzare il nuovo provisioning gratuito supportato da Xcode 7 e iOS 9.
Ecco i passaggi presi più o meno da i documenti per ulteriori informazioni.
2. Fai clic sulla scheda Generale in Navigatore progetto
3. Scegli il tuo ID Apple dal menu a comparsa Team.
4. Collega il tuo dispositivo e selezionalo nel menu schema.
5. Fai clic sul pulsante Risolvi problemi
Se viene visualizzato un errore relativo al nome del pacchetto non valido, modificarlo in qualcosa di unico.
6. Esegui la tua app
In Xcode, fai clic sul pulsante Crea ed esegui.
7. Affidati allo sviluppatore dell'app nelle impostazioni del dispositivo
Dopo aver eseguito l'app, verrà visualizzato un errore di sicurezza perché l'app che si desidera eseguire non proviene dall'App Store.
Sul tuo dispositivo , vai su Impostazioni > Generale > Profilo > your-Apple-ID-name > Affidati a nome-ID-Apple > Fiducia.
8. Esegui di nuovo l'app sul dispositivo.
Questo è tutto. Ora puoi eseguire la tua (o qualsiasi altra app per cui hai il codice sorgente) senza dover pagare $ 99 dollari. Grazie, Apple, per aver finalmente permesso questo.
Non puoi, non se stai parlando di applicazioni create con l'SDK ufficiale e che vengono distribuite direttamente da xcode.
Dovrai effettuare il jailbreak del tuo dispositivo.
Esiste un modo per distribuire app per iPhone senza pagare su Apple Dovrai effettuare il jailbreak del tuo dispositivo e seguire le istruzioni in http://www.alexwhittemore.com/? p = 398
Nulla di ciò che ho visto da nessuna parte indica che puoi implementare ad-hoc su un vero iPhone senza un certificato (a pagamento).
Stavo attraversando lo sviluppatore Apple ieri sera e lì nel certificato di provisioning ho trovato qualcosa del tipo: "" Firing Team Members " ;. Penso che ci sia un modo per aggiungere membri del team al profilo a pagamento. Puoi semplicemente chiedere al proprietario dell'ID app (a pagamento) di aggiungerti come membro del team. Non sono sicuro. Ci sto ancora cercando.
No, è facile farlo. In Xcode, imposta la Configurazione attiva su Rilascio. Cambia il dispositivo da Simulatore a Dispositivo, qualunque sia l'SDK. Se desideri esportare direttamente sul tuo iPhone, collegalo al tuo computer. Premi Build and Go. Se il tuo iPhone non è collegato al tuo computer, verrà visualizzato un messaggio che dice che il tuo iPhone non è collegato.
Se questo è il tuo caso: (iPhone non era collegato)
Vai alla cartella dei tuoi progetti e poi alla cartella di compilazione all'interno. Vai alla cartella Release-iphoneos e porta l'app all'interno, trascina l'icona di iTunes. Quando sincronizzi il tuo dispositivo iTouch, lo copierà sul tuo dispositivo. Apparirà anche in iTunes come applicazione per iPhone.
Spero che questo aiuti!
PS: se si dice qualcosa su un certificato non valido, basta fare clic sul progetto in Xcode, la piccola icona del progetto nello stack di file a sinistra e premere Apple + I o fare Ottieni informazioni dalla barra dei menu . Fai clic su Crea in alto. In Firma codice, modifica identità firma codice - Qualsiasi dispositivo del sistema operativo iPhone deve essere Non firmare.
Tutto dipende da quale versione di Xcode stai usando, poiché versioni diverse usano metodi diversi per implementare il tuo iPhone senza un profilo di provisioning.
Xcode 3.2.1 è una buona versione ed è facile da risolvere, ma dobbiamo sapere quale versione stai usando.
La soluzione pubblicata da Cawas funziona perfettamente anche con XCode4. Tuttavia, ci sono alcune modifiche all'interfaccia utente di IDE, quindi è necessario effettuare alcune ricerche per trovare Run Script :)
Nella vista Navigatore progetto fai clic sull'elemento radice del progetto, quindi nella finestra centrale seleziona Target, quindi fai clic sulla scheda Fasi di generazione e in fondo vedrai il pulsante Aggiungi fase di costruzione, fai clic su e seleziona Aggiungi Esegui script, quindi incolla " codesign " sceneggiatura pubblicata da Cawas.
Non c'è soluzione alternativa. Puoi distribuire app ad hoc solo se sono registrate sul tuo dispositivo. Questo ti impedisce di creare il tuo app store ..