[英]Xcode 4 & three20 & create IPA archive: No such file or directory
在Xcode 3.2.5中,我使用“Build and Archive”创建一个没有任何问题的IPA文件。 我怎么能在Xcode 4中做到这一点? 我想我必须使用“Product - > Archive”,但我在three20框架中收到了100多条错误消息。 大多数是“没有这样的文件或目录”。 (“产品 - >构建 - >构建存档”工作。没有错误。)
例如,这是第一条错误消息:
../scripts/Protect.command: line 23: cd: /Users/[USERNAME]/Library/Developer/Xcode/DerivedData/[PROJECTNAME]-blabla/ArchiveIntermediates/[PROJECTNAME]/BuildProductsPath/Release-iphoneos/../three20/Three20Core: No such file or directory
路径"/[PROJECTNAME]/BuildProductsPath/three20/"
确实不存在,但此路径存在: "/[PROJECTNAME]/three20/"
我能做什么?
Three20文档并没有为我解决这个问题(不幸的是......)。 最终对我有用的是一些解决方案。 “存档”和“存档构建”(或运行版本)之间存在差异,并且使用这些步骤我使用它们都没有构建问题:
您将需要更改Manni提到的脚本,为链接到项目树的每个Three20项目设置“Skip Install”标志,并将以下路径添加到项目的“Header搜索路径”中:
“$(BUILT_PRODUCTS_DIR)/../ three20”“$(BUILT_PRODUCTS_DIR)/../../ three20”
这将使您使用Build选项。 当您想要执行存档操作时,您还需要更改Xcode中的“位置”首选项, 如上所述 。
我在这篇文章中记录了这些步骤。
适用于Xcode4中的构建和归档的配置。
https://github.com/pazustep/three20/commit/4a9aad4eb90a6962dd729d245f9293a7cc0d7f36
REPO_ROOT_PATH = $(SRCROOT)/../..
ROOT_SOURCE_PATH = $(REPO_ROOT_PATH)/src
//OBJROOT = $(REPO_ROOT_PATH)/Build
//SYMROOT = $(OBJROOT)/Products
// Search Paths
LIBRARY_SEARCH_PATHS = $(STDLIB_LIBRARY)
//HEADER_SEARCH_PATHS = $(STDLIB_HEADERS) "$(CONFIGURATION_BUILD_DIR)/../three20"
HEADER_SEARCH_PATHS = $(STDLIB_HEADERS) "$(BUILT_PRODUCTS_DIR)/../three20" "$(BUILT_PRODUCTS_DIR)/../../three20"
# Ignore whitespace characters in paths
IFS=$'\n'
#cd ${CONFIGURATION_BUILD_DIR}${PUBLIC_HEADERS_FOLDER_PATH}
if [ "${DEPLOYMENT_LOCATION}" == "YES" ]; then
PREFIX=${BUILT_PRODUCTS_DIR}/..
else
PREFIX=${BUILT_PRODUCTS_DIR}
fi
cd ${PREFIX}${PUBLIC_HEADERS_FOLDER_PATH}
chmod a-w *.h 2>> /dev/null
chmod a-w private/*.h 2>> /dev/null
exit 0
可能会抛弃构建过程的另一件事是使用包含空格的方案名称 。
XCode不会阻止您这样做,但如果您为您的方案使用“Ad Hoc”这样的名称,您将会遇到相同的错误:
Three20/Three20+Additions.h: No such file or directory
我现在正在研究这个问题,希望能够在Xcode 3.2。#和Xcode 4中使用适当的补丁。
编辑:所以看起来让旧的Xcode 3.2项目与Xcode 4一起工作的最简单方法是执行以下操作:
我会写一篇关于这个的更多细节的三篇.info文章。
three20.info:Xcode 4过渡指南
http://three20.info/article/2011-03-10-Xcode4-Support
本指南由Three20团队整理,以帮助您成功将应用程序迁移到Xcode 4。
确保您的方案名称不包含空格。 这也导致“找不到文件”构建错误。
我必须在项目信息>构建(选项卡)下,并将以下内容添加到标题搜索路径:
three20/Build/Products/three20
这条路径可能是我的项目特有的,但如果它适用于其他人。
我做了以下工作让它适合我:
Absolute path
更改为products directory
。 就是这样!
提示:要了解导致存档创建存档文件而不是ipa的违规文件,请执行以下操作:
usr/local/include
将识别您需要从Public移动到Project的罪魁祸首头文件或您必须从绝对路径更改为products目录的文件。 但该目录(即usr / local / include)因子库目录结构而异 如果您想快速解决方法,只需执行下一个简单步骤:
1.转到提到的/Users/[USERNAME]/Library/Developer/Xcode/DerivedData/[PROJECTNAME]-blabla/ArchiveIntermediates/[PROJECTNAME]/BuildProductsPath/
path(它将在您的错误消息中)。 它应该是该路径中的子串直到/..
2. Release-iphoneos
创建Release-iphoneos
(或适当的Debug-iphoneos
)文件夹
一切都会好起来的!
Three20脚本假设您已经拥有该文件夹,但是当您第一次构建时,没有人存在。 这就是你需要单独修复“Build”和“Archive”的原因:“Build”动作通常使用Debug-iphoneos
文件夹,“Archive”动作使用Release-iphoneos
。
提示:您可以一次创建所有必需的文件夹,以避免不同配置出现问题。 这些是:
Release-iphoneos
Debug-iphoneos
Release-iphonesimulator
Debug-iphonesimulator
打开文件/src/common/Configurations/Paths.xcconfig
旧代码:
HEADER_SEARCH_PATHS = $(STDLIB_HEADERS) "$(CONFIGURATION_BUILD_DIR)/../three20"
新代码:
HEADER_SEARCH_PATHS = $(STDLIB_HEADERS) "$(CONFIGURATION_BUILD_DIR)/../../three20"
所以,我仍然有7个错误,但我可以创建存档...
Google网上论坛:Xcode 4,Three20和Project - > Archive
http://groups.google.com/group/three20/browse_frm/thread/cde36b7dab178bad
Amir Naor的答案是完美的。 我在xcode 4.2上验证了他的答案,但它确实有效。 我错过了“您将需要更改Manni上面提到的脚本”的步骤,因此我不断收到原始问题帖子中引用的类似错误。 希望你不要犯同样的错误。 从xcode 4.2开始,“然后你还需要将Xcode中的”Locations“偏好更改为上面提到的无毛。” 不再需要了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.