È possibile compilare ed eseguire un progetto Xcode su un dispositivo jailbroken senza un certificato di sviluppatore pagato?


9

Sia per calci che per motivi di budget, vorrei prendere un pacchetto che normalmente richiederebbe un account sviluppatore e creare un'app da eseguire su un dispositivo iOS con jailbreak.

Ho un iPod Touch di quinta generazione, jailbreak con evasi0n, con iOS 6.1.

Sto usando Xcode 4.6 con OS X (10.8.2) Lion.

Risposte:


6

I seguenti passi istruttivi per raggiungere questo scopo sono presi da: http://iphonedevwiki.net/index.php/Xcode

I miei risultati e le mie azioni sono forniti in ogni fase.

1. Crea un certificato autofirmato con firma del codice con il nome "iPhone Developer" sul portachiavi "login" (predefinito) usando Accesso portachiavi.

  • Ho preso screenshot mentre seguivo le istruzioni sopra.
  • Ho lasciato la maggior parte dei campi vuoti o al loro valore predefinito.

inserisci qui la descrizione dell'immagine

2. Apri /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist(4.2 o precedente:) /Developer/Platforms/iPhoneOS.platform/Info.plist. Potrebbe essere necessario il permesso di root.

  • Sto usando Xcode 4.6, quindi ho aperto il .plistfile precedente .

3. Sostituire tutte le occorrenze di XCiPhoneOSCodeSignContextby XCCodeSignContext. Ce ne sono tre (XCode versione 3.2.4+).

  • Ho apportato tre modifiche, come indicato dagli screenshot.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

4. Salvare il file e riavviare Xcode.

  • Ho salvato il file.

5. Assicurati di avere ldid sul tuo Mac. Metti una copia da qualche parte, ad es /usr/local/bin.

6. Creare uno script Python ldid3.py proprio accanto al programma ldid. Renderlo eseguibile. Riempilo con:

#!/usr/bin/env python

from sys import argv
from subprocess import check_call
from os.path import basename, dirname, splitext, join
from tempfile import NamedTemporaryFile

app = argv[-1]
ldid_path = join(dirname(__file__), 'ldid')
obj_path = join(app, splitext(basename(app))[0])

if '-gta' not in argv:
    check_call([ldid_path, '-S', obj_path])
else:
    with NamedTemporaryFile('w+b', 0) as f:
        f.write("""
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>get-task-allow</key>
    <true/>
  </dict>
</plist>
        """)
        check_call([ldid_path, '-S' + f.name, obj_path])
  • Ho creato un nuovo file di testo semplice e ho incollato il codice sopra riportato.
  • Ho salvato questo file come ldid3.pye memorizzato nella /usr/local/bindirectory.
  • Nel terminal, ha funzionato chmod 777 /usr/local/bin/ldid3.py.

7. Apri iPhoneCodeSign.xcspec. Questo file è disponibile in [Per Xcode 4.6: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec]:

8. Modificare la voce nel file dalla chiamata codesigna ldid3.py.

  • Come da istruzione ufficiale istruzione, convertito il file spec in testo semplice digitando in console: sudo plutil -convert xml1 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec
  • Ho aperto il file con TextEdit.
  • Sostituito <key>CommandLine</key><string>/usr/bin/codesign</string>con <key>CommandLine</key><string>/usr/local/bin/ldid3.py</string>.

9. Salvare il file e riavviare Xcode.

  • Ho salvato il file e ho chiuso TextEdit.

10. Crea un file /var/mobile/tdmtanfsul dispositivo, per abilitare il "bypass TDMTANF" di Apple in installd (attenzione: farlo ti farà anche entrare in un GameCenter in modalità sandbox).

  • Creo un file di testo vuoto in Windows, lo tdmtanfdenomino, l'ho inserito nel mio iPod, l'ho caricato /var/mobile/e riavviato il mio iPod.

Ora che tutto è finito con ...

Apro il mio progetto Xcode esistente e premo Esegui. Funziona nel simulatore iOS senza problemi.

inserisci qui la descrizione dell'immagine

Mi assicuro che la firma del codice sia impostata per utilizzare il certificato impostato nel passaggio 1.

inserisci qui la descrizione dell'immagine

Costruisco l'app (Progetto> Costruisci). Segue un messaggio di successo.

Afferro la mia cartella app TicTacToe.appda /Libary/Developer/Xcode/DerivedData/TicTacToe-cjgzmoxtflyegtfypsbxbuiuwxns/Build/Products/Debug-iphoneos/e trasferirlo alla mia macchina di Windows per installare sul mio iPod.

Nel tentativo di installare l'app sul mio iPod, trascino TicTacToe.appnella sezione applicazioni dell'utility di configurazione iPhone, ma ho ricevuto questo messaggio di errore che diceva che la mia app "non è un'applicazione mobile valida".

Ho anche provato a installare manualmente l'app usando iFunbox e l' app AppCake trovata in Cydia. Entrambi falliscono.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Come punto di interesse, perché mentre ho cercato su Google, ho notato che molte persone ne menzionano l'importanza: ho AppSync installato. (Scusate per l'enorme screenshot. Se dovessi smontarlo, per favore fatemi sapere!)

inserisci qui la descrizione dell'immagine

Conclusione

Quindi, nonostante segua attentamente le istruzioni, diverse volte, la mia app non viene riconosciuta dall'utilità di configurazione iPhone come un'app valida. Non riesco a installare l'app manualmente usando programmi come iFunbox o app Cydia come AppCake.

Sospetto che l'app non sia valida, ma dopo aver seguito attentamente le istruzioni, non sono sicuro del perché.

Qualcuno può dirmi perché la mia app non è valida e cosa posso fare per risolvere questo problema, oltre a tossire soldi?


È stata una lettura interessante, però.
Thecafremo,

No, sono contento di averlo letto e probabilmente ci tornerò in futuro. Grazie per averlo condiviso.
Robert,

Questo mi è stato molto utile quando ho lavorato su Xcode 4.2 e iOS 4, spero che qualcuno possa aggiornare la procedura su Xcode 4.6
rraallvv

Dopo aver scaricato ldid è necessario modificare le autorizzazioni su 755 con chmod 755 ldid. Questo mi stava causando un errore di uscita 1.

0

Puoi connettere il tuo dispositivo e selezionare il tuo dispositivo iOS come Esegui target. quando viene eseguito, l'applicazione viene installata automaticamente sul dispositivo. Oppure puoi selezionare il tuo dispositivo iOS, quindi non è necessario eseguirlo solo compilandolo e archiviandolo. Successivamente, distribuisci ... scegli Salva per Enterprise o Distribuzione ad hoc. Otterrai il tuo file .ipa. Spero che ti possa aiutare ..


0

continuando la risposta di @joncom .. puoi aggiungere direttamente i file .app al tuo iPhone, solo con alcuni passaggi aggiuntivi.

  • copia il .appfile sul desktop, quindi comprimilo
  • rinominare il [yourappname].zipto[yourappname].ipa
  • quindi vai avanti e scarica AppSync da Cydia
  • scarica e installa il file .ipa sul tuo dispositivo

NOTA:

puoi anche farlo direttamente senza passare attraverso tutte le modifiche al codice Python menzionate da @joncom .. leggi di più qui

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.