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

Man*_*nni 14 iphone xcode three20 xcode4

在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
Run Code Online (Sandbox Code Playgroud)

该路径"/[PROJECTNAME]/BuildProductsPath/three20/"确实不存在,但此路径存在:"/[PROJECTNAME]/three20/"

我能做什么?

Ami*_*aor 16

Three20文档并没有为我解决这个问题(不幸的是......).最终对我有用的是一些解决方案."存档"和"存档构建"(或运行版本)之间存在差异,并且使用这些步骤我使用它们都没有构建问题:

您将需要更改Manni提到的脚本,为链接到项目树的每个Three20项目设置"Skip Install"标志,并将以下路径添加到项目的"Header搜索路径"中:

"$(BUILT_PRODUCTS_DIR)/../ three20" "$(BUILT_PRODUCTS_DIR)/../../ three20"

这将使您使用Build选项.当您想要执行存档操作时,您还需要更改Xcode中的"位置"首选项,如上所述.

我在这篇文章中记录了这些步骤.


Man*_*nni 13

适用于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"
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)


jve*_*rdi 5

可能会抛弃构建过程的另一件事是使用包含空格方案名称.

XCode不会阻止您这样做,但如果您为您的方案使用"Ad Hoc"这样的名称,您将会遇到相同的错误:

Three20/Three20+Additions.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)