【问题标题】:Three20 v1.1 and Xcode 4Three20 v1.1 和 Xcode 4
【发布时间】:2011-03-16 13:43:47
【问题描述】:

有没有简单的方法让 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

任何帮助将不胜感激!

【问题讨论】:

    标签: xcode three20 xcode4 ipa


    【解决方案1】:

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

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

    2. 在导航器中选择你的项目,进入 Build Phases,打开“Link binary with libraries”,点击左下角的“+”,添加 Three20 库:libThree20.a,@987654323 @、libThree20Network.alibThree20Style.alibThree20UI.alibThree20UICommon.alibThree20Navigator.a。这将导致 Xcode 在您构建项目时构建 Three20。

    3. 根据 Colin 的回答,将 ${BUILD_DIR}/three20 添加到您的包含路径:转到构建设置,双击“标题搜索路径”,然后添加 ${BUILD_DIR}/three20(当您关闭对话框)。

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

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

    以上步骤足以编译代码。要使“存档”也起作用,您需要:

    1. $(BUILT_PRODUCTS_DIR)/../three20$(BUILT_PRODUCTS_DIR)/../../three20 添加到标头搜索路径设置。如果不这样做,您将收到无法找到三个 20 标头的编译错误。

    2. 对于 所有 Three20 项目(因此不仅仅是顶级项目),请转到 Build Settings 并将“Skip Install”设置为 YES。如果不这样做,项目将构建,但您将无法创建 IPA。

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

    最后,如果您遇到诸如 ld: library not found for -lThree20 之类的错误,并且您使用的是自定义构建配置(例如 AdHoc),请确保也将相同的构建配置添加到 Three20 项目的每个项目中(只需复制 Release配置)。

    【讨论】:

    • 这对我有用,但没有其他方法。非常感谢!
    【解决方案2】:

    您应该查看this StackOverflow question

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

    所以它看起来是最简单的方法 让旧的 Xcode 3.2 项目工作 使用 Xcode 4 是为了做到以下几点:

    进入 Xcode 4 的首选项 (Cmd+,)。 选择“位置”选项卡。在哪里 说“构建位置”,选择 下拉并选择“放置构建 产品在指定的位置 目标”我会写一个three20.info 文章详细介绍了 这个。

    【讨论】:

    • 我试过了,这似乎确实将错误数量从 100 多个减少到 18 个。我将在明天查看引用帖子中其他答案中提到的代码更改,然后查看如果这对 v1.1 代码进行了更改。
    • 我最终在 Xcode 4 中重新创建了整个项目,因为我一直在努力让它工作,每次打开项目时 Xcode 都会崩溃。我现在使用 1.0.5 版本并创建了我自己的 TTLaunchViewController,它运行良好!
    • 我宁愿将所有构建产品保存在派生位置(也是 Apple 推荐的方法)。到目前为止,我对这个选项没有运气。我尝试使用 SRCROOT 而不是 BUILD_PRODUCTS_DIR 但我怀疑这也不正确。 (仍在尝试找到将所有组合的三个 20 标题放在哪里。似乎不在其中任何一个之下!)
    【解决方案3】:

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

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

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

    就这么简单。


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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多