2009-06-19 13 views
6

Ho un progetto esistente su cui stavo lavorando e di recente ho deciso di aggiornare il mio iPhone SDK e aggiornato all'ultimo SDK 3.0.Aggiornamento a iPhone SDK 3.0 Causando problemi UIKit

Aggiornamento il mio SDK e andare ad aprire il mio progetto esistente. Abbastanza sicuro, ci sono alcuni problemi tra cui alcuni problemi con i certificati e così via. Comunque, io e Google siamo riusciti a risolverne la maggior parte, ma non ho avuto fortuna con quello che spero di essere l'ultimo dei miei problemi.

Quando si esegue il mio programma nel simulatore, io ora ottenere

dyld: Libreria non caricato: /System/Library/Frameworks/UIKit.framework/UIKit Citato da: /Developer/iGameLib/iGameLib/build/Debug-iphonesimulator/iGameLib.app/iGameLib Motivo: immagine non trovata

Ora, ho scoperto l'UIKit si è spostato

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0sdk/ System/Library/Frameworks/UIKit

e Ho aggiornato le mie impostazioni di destinazione e di progetto per puntare a quella nuova posizione quadro, ma ancora quando lo costruisco, senza fortuna.

Ho anche provato a cancellare le applicazioni e le impostazioni del simulatore, ancora senza fortuna.

Il riferimento .app viene cancellato quando eseguo il menu "pulito", l'ho confermato, quindi chiaramente qualcosa nelle impostazioni del mio progetto sta ancora puntando a utilizzare la vecchia posizione UIKit.

Dove dovrei cercare?

Sono andato il più lontano possibile per aiutare me stesso, ma temo di non essere all'altezza. Non lo vedo nelle impostazioni di destinazione, nelle impostazioni del progetto, nel plist o in altri file all'interno del mio progetto.

risposta

1

Ho avuto alcuni problemi simili con Xcode che sembrano non avere alcuna causa apparente. Il fatto è che Xcode ha ancora bug qua e là e a volte ti imbatterai in un muro.

La mia esperienza: simile alla tua situazione in qualche modo, in una particolare occasione, un progetto Xcode stavo lavorando appena cessarono di costruire per qualsiasi motivo misterioso, e nessuna quantità di pulizia, googling o SO-ing mi ha fornito alcuna risposta. Così ho semplicemente creato un progetto FRESH, NEW e ho riempito il codice sorgente del mio progetto corrotto in quello del nuovo progetto. Il nuovo progetto ha utilizzato SAME, librerie, risorse, impostazioni, attenzione, eppure è stato creato senza problemi. Ci sono voluti circa 20-25 minuti per effettuare il trasferimento ma considerando che avevo trascorso diverse ORE cercando di risolvere un bug che non si sarebbe rivelato nel progetto corrotto, il tempo valeva la pena.

Quindi, suggerirei di fare quello che ho fatto: forse provare a creare un nuovo progetto e trasferire la vecchia fonte e le risorse.

Good Luck

+1

Utilizzando un sistema SCM o gli snapshot incorporati di Xcode, se si raggiunge tale circostanza è possibile tornare alle versioni precedenti del file di progetto, o anche diffare il progetto rotto contro quello funzionante per vedere cosa è cambiato. Ci sono molti strumenti da provare prima di ricreare il tuo progetto come ultima risorsa. – cdespinosa

2
  1. verificare le impostazioni di destinazione
    assicurarsi che si sta in realtà il collegamento a tutte quelle strutture in Target (controllo sotto "collegamento binari con le librerie")

  2. Marchio sicuro di aver scelto il sdk 3.0 come SDK di base

  3. Creare un progetto vuoto e aggiungere i framework come prima; se avete ancora problemi, probabilmente uno SDK BORKED installare

BTW, non dovreste avere aggiungere nuovamente framework SDK, come i percorsi sono relativi alla SDK corrente

solo cercando di essere utile ... non sono sicuro di poter eseguire il debug da qui :)

+0

Allora, dove vai a cambiare il sdk 3.0 come sdk di base? Sto pensando che potrebbe essere il problema in qualche modo. Se è semplice come cambiare il target di costruzione in "Simulator - 3.0 | Debug", l'ho già fatto. C'è un'altra impostazione che mi manca per la posizione dell'SDK di base dell'iPhone? –

+1

Progetto> Modifica impostazioni progetto> Generale> SDK di base. Assicurati che il tuo obiettivo specifico (Progetto> Modifica impostazioni target> Crea> SDK di base) non sostituisca le impostazioni del Progetto che sono altrimenti condivise da tutte le destinazioni. – cdespinosa

4

OK, QUINDI HO LA RISPOSTA !!!

Molto semplicemente, Xcode non modifica tutte le variabili correttamente nel file .xcodeproj. Quindi, ecco i passi che ho fatto.

Uscire da Xcode, devi fare questo lavoro al terminale. Apri un terminale e vai dove si trova il tuo progetto. Trova il tuo .xcodeproj e vai dentro come se fosse una directory. Sembra un vero file nel finder, ma è una di quelle directory di pacchetti.

Ora, non ho potuto ottenere TextEdit per permettermi di modificarlo, ma si può andare in nano, così come ho fatto io

sudo nano project.pbxproj che è sotto il mio file .xcodeproj/cartella/pacchetto /qualunque cosa.

In questo file, è necessario trovare dove è impostato SDKROOT. È probabile che ci siano alcuni posti a cui fa riferimento, ma stai cercando SDKROOT = iphoneos2.2.1 o qualcosa di simile. Cambia TUTTI QUESTI (ce ne sono alcuni) in SDKROOT = iphoneos3.0

Ora sei a metà strada. fai ctrl x e salva il file. Quindi stai per eseguire ls e scoprire che cos'è il file .pbxuser. Il mio è myname.pbxuser. eseguire lo stesso comando di

sudo nano myname.pbxuser

In questo file, ci sono un numero enorme di riferimenti alla directory sdk 2.1 iPhone. Fai una ricerca/sostituzione di iPhoneSimulatorOLDVERSION.sdk, nel mio caso era iPhoneSimulator2.1.sdk e cambia il 2.1 a 3.0. Stai molto attento con questo però, non vorrei sapere cosa succede quando pasticci questo file.

Salvarlo e aprire xcode. PULIRE il progetto e costruisci ed esegui. Presto!

+0

La soluzione di Zach è la risposta corretta. Devo dire, sono sorpreso che le nuove risposte che dicono semplicemente di creare un nuovo progetto abbiano più voti. – pr1001

+1

Non dovresti aver bisogno di farlo (in effetti, non ci dovrebbero essere "numeri enormi" di percorsi specifici per SDK nel tuo progetto). L'unica cosa che dovresti fare è Project> Modifica impostazioni progetto> Generale e scegliere il nuovo SDK da lì. Se nel progetto sono presenti altri percorsi specifici dell'SDK, hai trascinato i framework nel tuo progetto direttamente dal Finder invece di sceglierli con il foglio Aggiungi quadri esistenti? In tal caso, controlla i "Percorsi di ricerca quadro" nel tuo target ed elimina i percorsi specifici dell'SDK che potrebbero esserci. – cdespinosa

0

Ho avuto lo stesso problema con Xcode 3.2.1 ma è stato risolto in un modo più semplice. Mi sono reso conto di aver disabilitato di recente le variabili di ambiente del mio target, in particolare quelle relative al debug della memoria (NSDebugEnabled, NSZombieEnabled, NSAutoreleaseFreedObjectCheckEnabled, MallocStackLogging, MallocStackLoggingNoCompact). L'app è stata eseguita una volta nel simulatore dopo aver rimosso le variabili di ambiente, ma mai più dopo.

Chiudere Xcode, il simulatore, riavviare Xcode e fare una pulizia completa del target (incluse le dipendenze fuori rotta) mi ha riportato a uno stato buono.

1

Ho appena eliminato il file UIKit.framework dalla cartella "Frameworks", facendo clic con il pulsante destro del mouse e aggiunto di nuovo. Clean build, e nessun problema ..

+0

Mi sono imbattuto nello stesso problema, e questo è anche il modo in cui l'ho risolto. xcode stava cercando di trovare il Framework nella directory sbagliata, quindi aggiungere di nuovo ha dato a xcode il percorso corretto. –

0

Lo stesso problema all'avvio dell'applicazione senza debug. Nella mia esperienza il file binario prodotto non sembra essere il colpevole.

Ho creato un'app dalla procedura guidata xcode che avvia OK nel simulatore (chiamiamola testApp, la mia applicazione si chiama myApp), ho cercato di capire dove è la differenza con la mia app.

otool -L myApp dà corretti (percorsi relativi) ai quadri, stessi come testApp

ps -E DYLD_ROOT_PATH, DYLD_FALLBACK_FRAMEWORK_PATH, DYLD_FRAMEWORK_PATH, variabili di ambiente DYLD_LIBRARY_PATH necessari ld per individuare il quadro sono OK per myApp rispetto ai valori di queste variabili quando viene lanciato testApp

Ho il sospetto che il problema si trovi da qualche parte nella comunicazione tra XCode e il simulatore una volta lanciata l'app ... anche se non riesco a trovare cosa c'è che non va ...

La soluzione che ha funzionato (almeno per me) hanno certamente alcuni grandi effetti collaterali, ma qui è: quit Xcode sfogliare il contenuto del pacchetto myApp.xcodeproj sblocco .model1v3 e .pbxuser per la modifica (il blocco nel pannello informazioni (cmd-I sul file)) eliminare questi due file iniziano Xcode e riprovare per lanciare la vostra applicazione da lì

10

mi è stato sempre lo stesso errore

dyld: Libreria non caricato:/Sistema/Libreria/Framework/UIKit.framework/UIKit

La soluzione sul mio caso è stata semplicemente uscire da Xcode e riprovare.

+0

Questo ha funzionato anche per me. –

+0

Fantastico, non ci ho mai pensato. Ma ha funzionato! –

+3

ha funzionato! Perché Apple ha assunto Microsoft per creare la nuova versione di xCode? – ma11hew28