Three20 v1.1和Xcode 4

问题描述:

有没有简单的方法让Three20 v1.1在xCode 4下工作? 我遵循http://three20.info/article/2011-03-10-Xcode4-Support的步骤,但似乎是为主。我使用v1.1,因为我使用TTLauncher。Three20 v1.1和Xcode 4

该项目使用正常版本生成良好,并在iPhone上运行完美。 但是,当我想创建档案(为分配IPA),然后我得到18个错误和8个警告。

第一个是:

../scripts/Protect.command: line 23: cd: /Users/XXX/Library/Developer/Xcode/DerivedData/iDoms-cmyivarwxpbvqdfnyclqdrikrtmw/ArchiveIntermediates/iDoms/BuildProductsPath/Release-iphoneos/../three20/Three20UICommon: No such file or directory 

大多数人都在如“没有这样的文件或目录”: #import "Three20Core/TTGlobalCoreLocale.h

或‘未声明(第一次使用的功能),’这是从“没有这样的文件或目录的问题我相信”

在我的“头搜索路径”我有:

$(BUILT_PRODUCTS_DIR)/../three20 
$(BUILT_PRODUCTS_DIR)/../../three20 
../../three20/Build/Products/three20 
/usr/include/libxml2 

任何帮助将不胜感激!

您应该检查出this StackOverflow question

我抄录如下接受的答案:

所以看起来变老的Xcode 3.2的项目在Xcode 4的工作 最简单的方法 是做到以下几点:

围棋到Xcode 4的偏好(Cmd +,)中。 选择“位置”选项卡。凡 说:“建位置”,选择 下拉,并选择“将打造 产品由 目标指定位置”我会写一个three20.info 物品进入更多详细的 这一点。

+0

我试过了,这看起来似乎可以减少100到18以上的错误数量。我将在明天引用的帖子中的其他答案中看到代码更改,并查看是否进行了更改到v1.1代码。 – 2011-03-17 18:29:53

+0

我最终重新创建了Xcode 4中的整个项目,就像我试图让它工作一样每次打开项目时Xcode都崩溃了。我现在使用1.0.5版本并创建了我自己的TTLaunchViewController,它的工作原理非常完美! – 2011-03-28 15:16:28

+0

我宁愿将所有构建的产品保留在派生位置(也是Apple推荐的方法)。到目前为止,我没有选择这个选项。我尝试使用SRCROOT而不是BUILD_PRODUCTS_DIR,但我怀疑这也不正确。 (仍然试图找到它放置在所有组合的three20头文件,似乎不在其中!) – 2011-06-17 18:01:29

这两条路径添加到您的标题搜索路径为目标构建设置:

“$(BUILD_DIR)/ three20” “$(BUILD_DIR)/../ three20”

定期构建需要第一个条目,档案需要第二个条目。

就是这么简单。


顺便说一句,创造你的主目录的文件与所有Xcode的为你的目标的environement环境变量的列表,下面的运行脚本生成阶段与内容添加到您的目标: ENV>〜/ xcode-environment.sh

请注意,在这种情况下,如果您的项目没有通过构建过程的编译阶段完成,并且您的运行脚本随后出现,那么该脚本将无法执行,因此请先将它。

只需添加到科林的回答是:你可以使用Xcode的相关项目功能使用three20,即使three20网站上说,它不是“官方支持”:

  1. 在您的工作空间,右键点击项目导航器中的空白空间。选择“将文件添加到‘我的工作区’,然后选择three20项目(three20/src/Three20/Three20.xcodeproj),这是你需要添加只有项目:没有必要手动添加three20子项目

  2. 选择项目。在导航,去构建阶段,打开“链接二进制与图书馆”,在左下角点击“+”,并添加Three20库:libThree20.alibThree20Core.alibThree20Network.alibThree20Style.alibThree20UI.alibThree20UICommon.alibThree20Navigator.a这将导致Xcode在构建项目时生成Three20。

  3. 按照Colin的答案将${BUILD_DIR}/three20添加到您的包含路径中:转到构建设置,双击“标题搜索路径”,并添加${BUILD_DIR}/three20(关闭对话框时它将显示为build/three20)。

  4. three20/src/Three20.bundle添加到您的资源。

  5. 如果您还没有这样做(相同的对话框,设置“其他链接器标志”),添加链接器标志-ObjC和-all_load可能也是一个好主意。

上述步骤足够编译代码。为了使“存档”工作过,你将需要:

  1. 添加$(BUILT_PRODUCTS_DIR)/../three20$(BUILT_PRODUCTS_DIR)/../../three20的头文件搜索路径设置。如果你不这样做,你会得到编译错误,无法找到three20头文件。

  2. 对于全部 Three20个项目(所以不只是顶级项目),进入生成设置并将“跳过安装”设置为YES。如果您不这样做,该项目将建立,但您将无法创建IPA。

确保您的产品名称(选择你的目标,去构建设置,然后设置“产品名称”),不包含空格,否则归档将无法正常工作。

最后,如果你得到错误,如ld: library not found for -lThree20和您使用的是自定义生成配置(如即席),确保同一构建配置添加到每个Three20项目太(只是复制发布组态)。

+0

这对我有用,谢谢! – UltimateBrent 2011-08-04 00:53:50

+0

这也适用于我。谢谢! – livingtech 2011-08-29 21:21:55

+0

这对我没有任何其他的工作。非常感谢! – 2012-06-01 15:29:53