繁体   English   中英

Xcode 4&three20&create IPA archive:没有这样的文件或目录

[英]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


SRC /普通/配置/ Paths.xcconfig

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"

SRC /脚本/ Protect.command

# 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一起工作的最简单方法是执行以下操作:

  • 进入Xcode 4的首选项(Cmd +,)。
  • 选择“位置”选项卡。
  • 如果显示“构建位置”,请选择下拉列表并选择“将构建产品放置在目标指定的位置”

我会写一篇关于这个的更多细节的三篇.info文章。

three20.info:Xcode 4过渡指南
http://three20.info/article/2011-03-10-Xcode4-Support

本指南由Three20团队整理,以帮助您成功将应用程序迁移到Xcode 4。

确保您的方案名称不包含空格。 这也导致“找不到文件”构建错误。

我必须在项目信息>构建(选项卡)下,并将以下内容添加到标题搜索路径:

three20/Build/Products/three20

这条路径可能是我的项目特有的,但如果它适用于其他人。

我做了以下工作让它适合我:

  1. 对于three20静态库,我使用cocoapods包含主项目中的文件..它只是摆脱了三个20给我的麻烦(而且它们很多..)顺便说一下我尝试用Nimbus替换three20 ..但是Nimbus缺少我的项目使用three20的一些功能..所以Nimbus没有帮助。
  2. 在所有其他子项目/静态库的构建设置下将skip install设置为yes,并在构建阶段将复制头从公共切换到项目
  3. 最重要的是:在子库下...在构建阶段,我确保复制文件目标从Absolute path更改为products directory

就是这样!

提示:要了解导致存档创建存档文件而不是ipa的违规文件,请执行以下操作:

  1. 选择存档,然后单击“分发”按钮。
  2. 选择“保存已建立的产品”选项。
  3. 点击下一步并保存。
  4. 在Finder中浏览创建的目录。
  5. 'libraries'子目录将标识将Skip Install设置为Yes所需的库。
  6. 在某些情况下, usr/local/include将识别您需要从Pu​​blic移动到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM