如何在最终应用中包含所有内容

Posted

技术标签:

【中文标题】如何在最终应用中包含所有内容【英文标题】:How to include everything on the final app 【发布时间】:2013-04-18 23:08:24 【问题描述】:

我有一个项目正在使用我创建的 2 个静态库,我们称它们为 libraryA 和 libraryB 以及一个 Bundle。

主项目使用 libraryA、libraryB 和 bundle,libraryA 也调用 libraryB 和 bundle。

每个静态库、包和主项目都是通过在 Xcode 中启动一个新项目来创建的。最后一个要创建的项目是 MyProject.xcodeproj。创建该项目后,我将 libraryA.xcodeproj、libraryB.xcodeproj 和 myBundle.xcodeproj 拖到其中并以如下内容结束:

一切都很好地编译和运行,但在 MyProject.app 中检查,我发现它不包含 myBundle 中的资源文件。是的,myBundle.bundle 处于 MyProject 的“复制包资源”阶段以及目标依赖项。

顺便说一句,请解释我应该如何为这个项目的所有部分设置构建阶段的“目标依赖项”、“将二进制文件与库链接”和“复制捆绑资源”部分,以便最终的应用程序包含所有内容。

谢谢。

【问题讨论】:

【参考方案1】:

Target Dependencies 仅表示在当前目标构建之前将首先执行哪些其他目标。如果您想在编译主项目之前对库和捆绑包进行更改,请确保包含这些目标中的每一个。如果您从依赖项中删除它们,项目仍然可以正常构建,当您想要添加更改时,您只需要手动构建库的项目。

与二进制库的链接应该同时显示 libraryA 和 B。它将引用该库的最新构建版本,因此结合目标依赖项,您的 MyProject 应用程序将包含对您的库的所有最新更改。

如果您的 MyProject 应用程序运行良好,则说明您所做的一切都是正确的。如果您可以引用静态库中的类而不会出现链接器错误,则说明这些类已正确链接。如果来自 myBundle 的资源显示在应用程序的 UI 中,那么它也被正确复制。

如果您缺少捆绑包中的文件,请查看您的 MyBundle 项目并确保其 Copy Bundle Resources 部分显示您想要包含的文件。

【讨论】:

MyBundle.bundle 包含所有资源,但 MyProject.app 是类似于将提交给苹果的最终应用程序不包含。至少我没有看到其中的任何捆绑图像。 删除依赖/复制资源并再次添加后,它们现在已包含在应用程序中。谢谢。

以上是关于如何在最终应用中包含所有内容的主要内容,如果未能解决你的问题,请参考以下文章

使用 cx_Freeze - 如何在 .exe 中包含所有必要的文件?

如何在网站上的所有页面中包含带有 css 的模板

在UWP最终包中包含可执行文件

如何在内容丰富的 Gatsby 中包含轮播组件?

如何在 WAR 文件中包含 Hsql 数据库?

如何在Angular Material Date Picker中包含前导零?