Nuovi orizzonti si sono recentemente aperti per i possessori di iDevice precedenti l’arrivo di iPhone 4S ed il tanto discusso Siri: grazie ad un tool installabile tramite Cydia (parliamo quindi di dispositivi jailbroken) chiamato Spire ed alcuni accorgimenti riguardanti il proxy al quale inviare le proprie richieste è possibile godere e fruire del nuovo assistente vocale targato Cupertino.
Su iPhone 4, anche connesso tramite 3G e non Wi-Fi, il porting di Siri targato @Chpwn ed altri chiarissimi hacker del panorama iOS restituisce risposte corrette in tempi apprezzabilissimi.
Ma non è tutto oro quel che luccica. Qualora infatti anche voi utilizziate come me lo stesso dispositivo sul quale avete installato Spire anche per “debuggare” applicazioni sviluppate con Xcode si spengono le luci e finisce la festa: Xcode e Spire litigano inequivocabilmente in uno scontro all’ultima dyld cache!
Poiché in rete le informazioni a riguardo sono davvero poche e lo stesso sviluppatore di Spire, Chpwn, non ha risposto/saputo rispondere alle richieste di aiuto su Twitter (di un utente prima e mia poi), ci pensa TheAppleLounge a mettere nero su bianco una guida step-by-step su come risolvere l’increscioso conflitto, scongiurando così la strada spesso consigliata e dichiarata da molti come unica possibile per il ritorno al mondo del development: la disinstallazione di Spire.
DISCLAIMER: “Don’t try this at home” direbbero in territorio a stelle e strisce! Se non siete pratici nello “sporcarvi le mani” con il file system del vostro dispositivo, nell’utilizzare il Terminale di Mac OS e nel modificare file di sistema a vostro rischio e pericolo fermatevi qui perchè TAL non si assume nessuna responsabilità per eventuali danni provocati da errate manovre di smanettamento informatico.
Innanzitutto descriviamo il caso in esame. Gli ingredienti sono:
Dopo aver installato Spire ed aver chiacchierato piacevolmente con Siri per una mattinata intera, tutto ebbe inizio con un bel:
warning: UUID mismatch detected with the loaded library - on disk is: /Users/<myusername>/Library/Developer/Xcode/iOS DeviceSupport/5.0.1 (9A405)/Symbols/System/Library/Frameworks/CoreLocation.framework/CoreLocation unable to load symbol file: warning: Unable to read symbols for /Library/MobileSubstrate/MobileSubstrate.dylib (file not found). warning: No copy of MobileSubstrate.dylib found locally, reading from memory on remote device. This may slow down the debug session.
Warning: UUID mismatch detected with the loaded library: non potete capire quanto ho odiato questa frase!
Cercando questo warning in rete viene fuori di tutto e di più. E’ un warning non troppo specifico, che non termina ma nemmeno fa proseguire il processo di debug. Le cause che lo provocano possono essere molteplici, ma se prima non l’avevate mai visto e dopo aver installato Spire vi ha iniziato a far strappare i capelli, beh, è il caso che vi armiate di pazienza e continuiate a leggere questa guida Mac OS only.
Procediamo per punti, come da manuale. Tranquilli che è più semplice di quel che può sembrare a prima vista:
./vfdecrypt -i 038-3763-001.dmg -o decrypted.dmg -k a31ffd506c6711c5a0c52c9f0a2f7208a2f63ad9dd40506e70d80ea20a981eb1312bc774
L’immagine disco 038-3763-001.dmg è criptata da Apple. Essa contiene il file system di iOS 5.0.1 una volta installato dal quale dobbiamo andare a recuperare un file che poi sostituiremo all’interno del file system stessso del nostro dispositivo. In particolare:
-i 038-3763-001.dmg: indica proprio 038-3763-001.dmg come input file da decriptare;
–o decrypted.dmg: indica un arbitrario nome di file di output che verrà creato al termine del processo;
-k a31ffd506c6711c5a0c52c9f0a2f7208a2f63ad9dd40506e70d80ea20a981eb1312bc774: indica la chiave utilizzata per decriptare (fonte theiPhoneWiki);
/System/Library/Caches/com.apple.dyld
e facciamo una copia del file dyld_shared_cache_armv7, l’unico presente nella directory, che andremo poi a rinominare in dyld_shared_cache_armv7.new
/var/spire
e già che ci siamo salviamo una copia di backup sul nostro Mac del file dyld_shared_cache_armv7 attualmente presente in /var/spire.
Gran finale: salviamo, usciamo da iFile ed riavviamo il nostro dispositivo.
A questo punto avviando Xcode e collegando l’ iDevice al Mac dovremmo riscontrare che il dispositivo non viene proprio riconosciuto. Don’t worry! Con Xcode aperto e dispositivo collegato apriamo Organizer (Window > Organizer) e constatiamo che accanto al nome del dispositivo ci sia un pallino giallo anziché verde: senza paura selezioniamolo e poi clicchiamo sul pulsante in basso “Remove“.
Chiudiamo Organizer, Xcode e scolleghiamo il dispostivo.
Riavviamo Xcode, riapriamo Organizer e ricollegando il dispositivo aspettiamo: dovremmo vedere in breve tempo il nostro iDevice automaticamente reinstallato (i certificati di provisioning vengono recuperati automaticamente da Xcode).
Beh, non ci resta che testare la procedura. Apriamo un progetto e diamo un bel “Run“: funziona? Spero proprio di si: così è stato per me!
Sarebbe stato un vero peccato “perdere” Spire, sebbene in queste ultime ore apprendiamo che Apple sembrerebbe aver dichiarato guerra ai proxy di Spire, arrivando a cambiare lo stesso protocollo di Siri. Staremo a vedere: su TAL troverete, come sempre, tutte le notizie più significative.
La stampa delle fotografie è una pratica che ha attraversato generazioni, trasformando immagini digitali in…
Buona notizia per Apple che, stando a quanto riportato dal Global Handset Model Sales Tracker…
In vista dell’arrivo del Natale c’è già chi sta pensando di farsi un bel regalo…
Sembra esserci qualche sorpresa in vista in casa Apple per quanto riguarda l’Apple Watch. Infatti…
Dopo un periodo di appannamento, inizia ad essere interessante la crescita del mercato dei tablet…
Apple è sempre a lavoro per garantire novità di rilievo ai propri utenti, ciò significa…
View Comments
Ottimo!! grazie stasera lo provo, ho questo problema anche io :)
@ Paolo: Incrocio le dita per te! :)