升级到iPhone SDK 3.0会导致UIKit问题

时间:2009-06-19 03:16:39

标签: iphone xcode iphone-sdk-3.0

我有一个正在处理的现有项目,最近我决定更新我的iPhone SDK并更新到最新的3.0 SDK。

我更新了SDK并开始打开现有项目。果然,存在一些问题,包括一些证书问题等等。无论如何,谷歌和我能够解决其中大部分问题,但我对我希望成为最后一个问题的运气没有任何好运。

在模拟器中运行我的程序时,我现在得到了

  

dyld:未加载库:   /System/Library/Frameworks/UIKit.framework/UIKit   参考自:   /Developer/iGameLib/iGameLib/build/Debug-iphonesimulator/iGameLib.app/iGameLib原因:找不到图像

现在,我发现UIKit已经搬到了

  

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0sdk/   系统/图书馆/框架/ UIKit的

我已经更新了我的目标和项目设置以指向新的框架位置,但是当我构建它时,没有运气。

我也尝试清除模拟器的应用程序和设置,但仍然没有运气。

当我运行“干净”的menuitem时,引用.app被清除,我已经确认了这一点,所以我项目设置中的某些东西仍然指向使用旧的UIKit位置。

我应该在哪里寻找?

我尽可能地帮助自己,但我担心我在这里不知所措。我没有在目标设置,项目设置,plist或我项目中的任何其他文件下看到它。

7 个答案:

答案 0 :(得分:10)

我得到了同样的错误

dyld:未加载库:/System/Library/Frameworks/UIKit.framework/UIKit

我的案例解决方案只是退出Xcode并再试一次。

答案 1 :(得分:4)

好的,我有答案!!!

很简单,Xcode没有在实际的.xcodeproj文件中正确更改所有变量。所以,这是我采取的步骤。

离开Xcode,你必须在终端做这个工作。建立一个终端并前往您的项目所在的位置。找到你的.xcodeproj并进入它,好像它是一个目录。它看起来像finder中的实际文件,但它是这些包目录之一。

现在,我无法让textedit允许我编辑它,但你可以进入nano,就像我一样

sudo nano project.pbxproj,它位于我的.xcodeproj文件/文件夹/ p​​ackage /中。

在此文件中,您需要找到SDKROOT的设置位置。有可能引用了一些地方,但你正在寻找SDKROOT = iphoneos2.2.1或类似的东西。将所有这些(有一些)更改为SDKROOT = iphoneos3.0

现在,你已到了一半。执行ctrl x并保存文件。接下来你要做ls并找出.pbxuser文件是什么。我的是myname.pbxuser。

运行相同的命令

sudo nano myname.pbxuser

在此文件中,有大量对2.1 iphone sdk目录的引用。搜索/替换iPhoneSimulatorOLDVERSION.sdk,在我的情况下是iPhoneSimulator2.1.sdk 并将2.1更改为3.0。但是要非常小心,我不想知道当你弄乱这个文件时会发生什么。

保存并打开xcode。清理项目并构建和运行。的Presto!

答案 2 :(得分:2)

  1. 检查目标设置
    确保您实际链接到Target中的所有框架(请参阅“使用库链接二进制文件”)

  2. 确保您已选择3.0 sdk作为基础SDK

  3. 创建一个空白项目并像以前一样添加框架;如果你仍然有问题,可能是一个borked SDK安装

  4. 顺便说一句,你不应该重新添加sdk框架,因为路径是相对于当前的SDK

    试图提供帮助...不确定我可以从这里调试:)

答案 3 :(得分:1)

我遇到过类似Xcode的问题似乎没有明显的原因。事实上,Xcode在这里和那里仍然存在错误,有时你会碰到一堵墙。

我的经历:与您的情况类似,在某个特定场合,我正在工作的Xcode项目因为任何神秘的原因而停止构建,并且没有提供任何清洁,谷歌搜索或提供的数据我的任何答案。所以我简单地创建了一个FRESH,NEW项目,并将我的腐败项目中的源代码填充到新项目的源代码中。新项目使用了SAME源代码,库,资源,设置,请注意 - 但它构建没有任何问题。花了大约20-25分钟才完成转移,但考虑到我花了几个小时试图解决一个在腐败项目中无法揭示的错误,时间非常值得。

所以,我建议做我做的事情:也许尝试创建一个新项目并转移你的旧资源和资源。

祝你好运

答案 4 :(得分:1)

我刚从'Frameworks'文件夹中删除了UIKit.framework,右键单击并再次添加回来。 干净的构建,没问题..

答案 5 :(得分:0)

我在使用Xcode 3.2.1时遇到了同样的问题,但它以更简单的方式解决了。我意识到我最近禁用了我的目标环境变量,特别是与内存调试有关的变量(NSDebugEnabled,NSZombieEnabled,NSAutoreleaseFreedObjectCheckEnabled,MallocStackLogging,MallocStackLoggingNoCompact)。应用程序在删除环境变量后在模拟器中运行一次,但之后再也没有。

退出Xcode,模拟器,重新启动Xcode并完全清理目标(包括它的依赖性)让我恢复到良好的状态。

答案 6 :(得分:0)

在没有调试的情况下启动应用程序时出现同样的问题 根据我的经验,制作的二进制文件似乎不是罪魁祸首。

我从xcode向导创建了一个应用程序,它在模拟器中启动OK(让我们称之为testApp,我的应用程序名为myApp),我试图找出与我的应用程序的区别。

otool -L myApp 给出框架的正确(相对路径),与testApp

相同

ps -E dd定位框架所需的DYLD_ROOT_PATH,DYLD_FALLBACK_FRAMEWORK_PATH,DYLD_FRAMEWORK_PATH,DYLD_LIBRARY_PATH环境变量 对于myApp而言,与启动testApp时这些变量的值相比是可以的

我怀疑问题出现在XCode和模拟器之间的通信中,一旦应用程序启动......尽管我找不到有什么问题......

有效的解决方案(至少对我而言)肯定有一些很大的副作用,但这里是: 退出xcode 浏览包myApp.xcodeproj的内容 解锁.model1v3和.pbxuser进行修改(信息面板中的锁定(文件中的cmd-I)) 删除这两个文件 启动xcode并重试从那里启动您的应用程序