题
是否有一种简单的方法可以在Xcode 4下获得320 V1.1工作?我遵循了步骤 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 3.2项目与Xcode 4合作的最简单方法是执行以下操作:
进入Xcode 4的首选项(CMD+,)。选择“位置”选项卡。在说“构建位置”的地方,选择下拉菜单并选择“在目标指定的位置上放置产品”,我将写一篇三十二十info文章,以了解有关此的更多详细信息。
其他提示
只是为了增加Colin的答案:您可以使用Xcode的依赖项目功能来使用Trix20,即使Trix20网站表示没有“正式支持”:
在您的工作区中,右键单击项目导航器的空白空间。选择“将文件添加到“我的工作区”,然后选择“三十20”项目(
three20/src/Three20/Three20.xcodeproj
)。这是 只要 您需要添加的项目:无需手动添加320个子项目。在导航器中选择您的项目,转到构建阶段,打开“带有库的链接二进制”,单击左下角的“+”,然后添加320库:
libThree20.a
,libThree20Core.a
,libThree20Network.a
,libThree20Style.a
,libThree20UI.a
,libThree20UICommon.a
和libThree20Navigator.a
. 。这将导致Xcode在您构建项目时构建320。添加
${BUILD_DIR}/three20
按照科林的答案,请包括路径:转到构建设置,双击“标题搜索路径”,然后添加${BUILD_DIR}/three20
(它将显示为build/three20
当您关闭对话框时)。添加
three20/src/Three20.bundle
提供您的资源。如果还没有这样做,则可能是一个好主意-OBJC和-All_load(相同的对话框,设置“其他链接标志”)。
上面的步骤足以编译代码。要使“存档”工作,您将需要:
添加
$(BUILT_PRODUCTS_DIR)/../three20
和$(BUILT_PRODUCTS_DIR)/../../three20
到标题搜索路径设置。如果您不这样做,您将遇到无法找到三十个标题的汇编错误。为了 全部 三十20个项目(不仅是顶级项目),然后进行构建设置,并将“跳过安装”设置为“是”。如果您不这样做,该项目将构建,但是您将无法创建IPA。
确保您的产品名称(选择目标,转到构建设置,然后设置“产品名称”)不包含空格,否则归档将不起作用。
最后,如果您遇到的错误 ld: library not found for -lThree20
而且,您正在使用自定义构建配置(例如ADHOC),请确保在三个20个项目中的每个项目中添加相同的构建配置(只需复制发布配置)即可。
将这两个路径添加到目标的构建设置中的标题搜索路径:
“ $(build_dir)/threx20”“ $(build_dir)/../三十20”
常规构建需要第一个条目,档案需要第二个条目。
很容易。
顺便说一句,要在您的主目录中创建一个文件,其中包含目标环境的所有Xcode环境变量列表,请使用内容添加以下运行脚本构建阶段,并使用内容:env>〜/xcode-environment.sh
请注意,在这种情况下,如果您的项目没有通过构建过程的编译阶段进行操作,并且您的运行脚本将在以后进行,则该脚本将不会被执行,因此请先将其放在首位。