gpt4 book ai didi

ios - Xcode with iOS - 以易于在 Debug模式下运行、分发、迭代的方式创建库

转载 作者:IT王子 更新时间:2023-10-29 08:06:37 25 4
gpt4 key购买 nike

这是针对 Xcode 4.5.x iOS armv7 armv7s 和 sim,特别是关于 Xcode 项目设置/项目build设置:

我有一个项目“A”,它是应用商店中的一个应用。我有一个项目“B”,它是一个将在 A 中作为依赖项使用的库,但也作为第三方库分发给其他公司以在他们的应用程序中使用。 (其他公司的第 3 方应用在这种情况下表示为“Y”)。

要求如下:

  • 必须能够在 Debug模式下运行“A”,当然还可以在同一个构建/ session 中同时调试嵌套的“B”项目。
  • 在“A”中,我可以 CMD+单击“B”中的方法签名,然后直接跳转到该 src 文件,我可以在其中自由编辑然后重新编译,就好像它来自同一个项目一样。<
  • 其他公司的开发人员“X”必须能够轻松地将我们的库“B”拖到他的项目“Y”中,其中“B”是一个静态库,只公开了所需的头文件。 “Y”当然会从“B”的实际头文件的子集中调用方法。只有来自此子集的文件应包含在 Dev“X”的分发中。
  • 开发人员“X”根本不需要修改他的 Xcode 项目中的任何内容,只需将“B”的文件夹(其中包含静态库和头文件子集)拖到他的项目中,然后单击“复制资源,创建引用资料等”。
  • 我需要能够基于我一直在编辑的相同文件轻松生成“B”的静态库构建,因为我在其依赖项目“A”中迭代和调试该项目“B” .
  • “B”除了源代码之外没有其他资源——没有图像 Assets 、xib 或类似的东西。
  • 在“B”中,我点击“存档”,噗!有一个静态库(必须是 fat 二进制文件,我的意思是它可以在 simulator + armv7 + armv7s 上运行,求求你!!)带有准备分发的基本头文件。
  • 所有这些都必须应用商店批准-友好
  • 此外,这必须是可靠的。如果我每次添加一个文件都必须不断回来进行大量配置更改,那就不好了。

更新:
* 最重要:这需要是一个 repo 协议(protocol),我可以检查这是一个完整的端到端模板,我正在寻找什么,我需要能够打开 Xcode 4.5.2+ 并点击播放并看到这个东西的构建,没有痛苦。

500 分 给任何能给我提供一个模板项目的人,该项目演示了我上面描述的所有内容,“A”、“B”和“Y”(“B”静态库用作一个部门)。我所需要的只是一组框架项目(“A”、“B”(嵌套在“A”中)和“Y”),它们展示了如何做到这一点。在发布赏金之前,请不要隐瞒答案。如果它符合我的要求,我将确保您获得我的赏金积分。

我有点担心,由于 Xcode 的局限性,这甚至不可能以一种不完全麻烦的方式实现。请证明我错了。

更新:我决定不再关心 armv6。再见,armv6。 如果您可以将 armv6 与 armv7、armv7s、i386/simulator 一起纳入 dist 输出,则加分。

附言我保证我会合理地给予积分。我不想在技术上拒绝他们。如果你能在这方面大大减轻我的生活痛苦,我会很乐意给你加分。

最佳答案

仅在 Xcode 中这是不可能的。由于编译目标切换(模拟器、设备等),您将需要一些构建脚本(当然您可以从 Xcode 中调用)。

我认为您至少必须在“复制文件”构建步骤中添加额外的分发 header 。但是,如果您更改某些内容,则无需进行其他修改。

我为 libturbojpeg 做了类似的事情,参见 https://github.com/dunkelstern/libturbojpeg-ios以供引用。如果您从终端调用“build.sh”文件,它目前会将一个胖库放入“lib”,但忽略分发 header 。在 libturbojpeg 的情况下,我需要 2 个项目文件,因为每个目标将不同的汇编程序文件子集编译到库中(最好不要查看汇编程序 makefile 内容)。要编译你需要一个最新版本的 NASM,因为苹果发布的版本很旧(用 brew 获取)。我将很快在同一帐户上发布此类库构建项目的模板。 (如果在此处使用适当的链接完成,将进行编辑或评论)

基本上它是这样工作的:

  1. 创建一个构建脚本,为每个需要的平台目标调用 xcodebuild
  2. Xcode 库项目必须包含一个脚本,用于将构建的库放在构建脚本可以找到的目录中
  3. 必须通过“复制文件”目标操作复制其他 header
  4. 构建脚本必须将所有库构建与 lipo
  5. 合并
  6. 将构建脚本作为“运行脚本”目标添加到您的构建中,但请注意您不会创建无限循环(或者只是从终端调用它来创建发布构建)
  7. 在你的主项目中添加库子项目

然后您可以使用复制的头文件和 lipo 合并的通用库分发输出目录,并像往常一样在您的工作区中正常使用该库作为子项目(它仅构建和链接然后需要库,而不是通用库,但这应该没问题)

这实际上并没有解决为库创建 DSYM 文件的问题。但通常在构建调试版本时,调试符号应该在库本身中。它将在发布版本上去除调试符号,然后您将没有 DSYM。

示例项目链接:https://github.com/dunkelstern/StaticLibraryTemplate

关于ios - Xcode with iOS - 以易于在 Debug模式下运行、分发、迭代的方式创建库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13264847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com