6

有没有一种简单的方法可以让 Three20 v1.1 在 xCode 4 下工作?我按照http://three20.info/article/2011-03-10-Xcode4-Support上的步骤进行操作,但这似乎是针对大师的。我使用 TTLauncher 时使用 v1.1。

该项目可以正常构建,并且可以在 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

任何帮助将不胜感激!

4

3 回答 3

10

只是为了补充 Colin 的答案:您可以使用 Xcode 的依赖项目功能来使用three20,即使three20 网站说它不是“官方支持的”:

  1. 在您的工作区中,右键单击项目导航器中的空白区域。选择“将文件添加到“我的工作区”,然后选择three20项目(three20/src/Three20/Three20.xcodeproj)。这是您唯一需要添加的项目:无需手动添加three20子项目。

  2. 在导航器中选择您的项目,转到 Build Phases,打开“Link binary with libraries”,单击左下角的“+”,然后添加 Three20 库:libThree20.alibThree20Core.alibThree20Network.alibThree20Style.alibThree20UI.a和. 这将导致 Xcode 在您构建项目时构建 Three20。libThree20UICommon.alibThree20Navigator.a

  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 项目(不仅仅是顶级项目),进入 Build Settings 并将“Skip Install”设置为 YES。如果您不这样做,该项目将构建,但您将无法创建 IPA。

确保您的产品名称(选择您的目标,转到构建设置,然后设置“产品名称”)不包含空格,否则存档将不起作用。

最后,如果您遇到错误,例如ld: library not found for -lThree20您正在使用自定义构建配置(例如 AdHoc),请确保也为每个 Three20 项目添加相同的构建配置(只需复制发布配置)。

于 2011-07-18T15:31:16.887 回答
3

您应该查看这个 StackOverflow 问题

我在下面复制了接受的答案:

所以看起来让旧的 Xcode 3.2 项目与 Xcode 4 一起工作的最简单方法是执行以下操作:

进入 Xcode 4 的首选项 (Cmd+,)。选择“位置”选项卡。在它显示“构建位置”的地方,选择下拉菜单并选择“将构建产品放置在目标指定的位置”我将写一篇有关此的更多详细信息的three20.info 文章。

于 2011-03-17T03:40:50.127 回答
1

将这两个路径添加到目标的构建设置中的标头搜索路径:

"$(BUILD_DIR)/three20" "$(BUILD_DIR)/../three20"

常规构建需要第一个条目,存档需要第二个条目。

就这么容易。


顺便说一句,要在您的主目录中创建一个包含目标环境的所有 Xcode 环境变量列表的文件,请将以下运行脚本构建阶段添加到您的目标中:ENV > ~/xcode-environment.sh

请注意,在这种情况下,如果您的项目没有通过构建过程的编译阶段,并且您的 Run 脚本稍后出现,则该脚本将不会被执行,因此请将其放在第一位。

于 2011-07-12T17:20:28.093 回答