找不到存档的 Three20/Three20.h 文件
Posted
技术标签:
【中文标题】找不到存档的 Three20/Three20.h 文件【英文标题】:Three20/Three20.h file not found for Archive 【发布时间】:2012-10-08 11:24:04 【问题描述】:我正在尝试更新已具有 Three20 库的应用。现在我使用的是 xcode 4.5,每次我尝试制作存档时都会收到此错误:
找不到Three20/Three20.h 文件
一开始我无法进行任何类型的构建,但是在标题搜索路径中添加了 $(BUILT_PRODUCTS_DIR)/../three20 和 $(BUILT_PRODUCTS_DIR)/../../three20 之后构建和目标设置我可以在我的设备中进行构建。无论如何,如果我尝试制作存档来发布我的应用程序,则会返回相同的错误。我可以做什么?我已经重新安装了 Three20 的最新版本....我必须尝试我在互联网上找到的这个解决方案:
转到 Xcode4 Preferences (Cmd + ,) > Locations > Build Location > 并选择“Place build products in locations specified by targets”
在 xcode 4.5 中我无法使用此解决方案...也许构建位置菜单已更改,我找不到选项“将构建产品放置在目标指定的位置”...。有人知道我在哪里可以找到这个设置?
至少有人是如何在 Xcode4.5 和 Three20 上成功制作存档的?
【问题讨论】:
【参考方案1】:Three20好久没更新了,bug很多,搭建这个框架很辛苦。
你可以试试nimbus。它来自three20。
Nimbus 的背景
Nimbus 的设计灵感来自 Three20 框架。话虽这么说,但存在许多基本问题 与 Nimbus 非常努力避免的 Three20。其中:
文档不足。意大利面条依赖。饱受“厨房之苦” 水槽”复杂。一个复杂的构建结构。大量的 难以解决的错误。接近于零的测试覆盖率。对于它的 弱点,Three20 确实通过它的 功能集。公司在应用商店的 100 多个应用中使用它 例如 Facebook、LinkedIn、Posterous、Meetup 和 SCVNGR。
Nimbus 希望有一天能提供和 Three20 一样多的价值 逐个功能比较,但具有无价的好处 崇高的文档和测试覆盖率。
【讨论】:
谢谢,但我如何处理使用旧版本应用程序的老用户?如果我使用 Nimbus 发布我的应用程序的新版本,进行更新的用户将拥有一个“带有一些 Three20 痕迹”的应用程序,或者旧库将被完全删除?对不起,我不知道如何对像three20这样具有侵入性的库进行更新... 更新不用担心。据我所知,ios App的更新将完全替代 似乎 Cri1682 和 agassi_yzh(分别是提问的用户和发布上述答案的用户)已经有一段时间没有上过 SO 了。所以这是一个悬而未决的问题:有真的有人将他们的three20迁移到Nimbus吗?进展如何? b/c 老实说,这三个 20 的业务似乎比它的价值更麻烦【参考方案2】:我也支持从three20切换,但有时没那么简单。
要解决您的问题,您可以尝试使用CocoaPods。它是一个库依赖工具,可让您添加所需的任何库。几周前有人添加了三个 20 的 pod。
这应该可以让您使用标准的 xcode 归档过程来构建您的项目。
如果您不喜欢使用 cocoapods,您也可以使用“Build for...”->“Archiving”来构建该应用程序。您可以在相同的“产品”菜单中找到它。它将生成一个 .app 文件,您可以使用 Application Loader
应用程序提交该文件。
您可以通过在项目侧边栏中的“产品”文件夹下二次单击目标名称来找到.app
文件。
【讨论】:
不幸的是...app
文件不会替换 .ipa
文件,当我想将我的应用程序提交给像 testflight 这样的实体时【参考方案3】:
我做了以下工作以使其适合我:
-
对于three20静态库,我使用cocoapods将文件包含在主项目中..它刚刚摆脱了three20给我带来的所有麻烦(而且它们很多..)顺便说一句,我尝试将three20替换为Nimbus.. 但 Nimbus 缺少我的项目使用 three20 的一些功能......所以 Nimbus 没有帮助。
在所有其他子项目/静态库的构建设置下将跳过安装设置为是,并在构建阶段将复制标头从公共切换到项目
最重要的是: 在子库下.. 在构建阶段,我确保 复制文件 目标从
Absolute path
更改为 products directory
。
就是这样!
提示:要了解导致存档创建存档文件而不是 ipa 的违规文件,请执行以下操作:
-
选择存档并单击分发按钮。
选择“保存已构建产品”选项。
点击下一步并保存。
在 Finder 中浏览创建的目录。
“库”子目录将标识您需要将“跳过安装”设置为“是”的库。
在某些情况下,
usr/local/include
会识别您需要从 Public 移动到 Project 的罪魁祸首文件,或者您必须从绝对路径更改到产品目录的文件。但该目录(即 usr/local/include)因您的子库目录结构而异
【讨论】:
以上是关于找不到存档的 Three20/Three20.h 文件的主要内容,如果未能解决你的问题,请参考以下文章
由于找不到“Cordova/CDVViewController.h”文件,离子应用程序存档在 xcode 7.2 中失败