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.
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
.plist
file precedente .
3. Sostituire tutte le occorrenze di XCiPhoneOSCodeSignContext
by XCCodeSignContext
. Ce ne sono tre (XCode versione 3.2.4+).
- Ho apportato tre modifiche, come indicato dagli screenshot.
4. Salvare il file e riavviare Xcode.
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.py
e memorizzato nella /usr/local/bin
directory.
- 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 codesign
a 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/tdmtanf
sul 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
tdmtanf
denomino, 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.
Mi assicuro che la firma del codice sia impostata per utilizzare il certificato impostato nel passaggio 1.
Costruisco l'app (Progetto> Costruisci). Segue un messaggio di successo.
Afferro la mia cartella app TicTacToe.app
da /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.app
nella 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.
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!)
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?