相关疑难解决方法(0)

如何在另一个框架内添加框架(Umbrella Framework)

我使用以下教程构建了一个框架.

我也有这个框架.

我正在尝试在我的内部实现第二个框架,从我在Apple文档中读到的结果框架被称为"伞框架".

我在框架中使用拖放添加了第二个框架,并验证它是否在"Link Binary With Libraries"中.

在我尝试在我的框架的一个类中进行下一次导入之后:

#import <CrashReporter/CrashReporter.h>
Run Code Online (Sandbox Code Playgroud)

我收到错误,因为导入的框架不可见.

另外我看过stackoverflow帖子: 如何在iOS SDK中创建一个伞形框架?

更新

有没有人试图为iOS提取PLCrashReporter类并将其集成到一个项目中?

你可以在这里找到我的尝试.

frameworks ios

43
推荐指数
4
解决办法
3万
查看次数

伞框架

我已经创建了一个框架,其中插入了第二个框架,即所谓的"伞形框架".当我在测试应用程序中插入框架(嵌入式二进制文件和链接的框架和库,两者)都无法构建应用程序时,我收到以下错误:

ld: framework not found 'embeddedInMyFramework' for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

比在嵌入式二进制文件和链接框架和库中添加该框架(embeddedInMyFramework)并尝试构建比工作正常.稍后从嵌入式二进制文件和链接的框架和库中删除该框架,仍然可以正常工作.有人可以帮我解决这个问题,不确定当我第一次向嵌入式二进制文件添加框架时会发生什么,以及如何解决这个问题(如果不添加嵌入式二进制文件,它可以以某种方式工作)

frameworks ios swift

11
推荐指数
2
解决办法
7991
查看次数

我可以在另一个框架中包含一个框架吗?

我正在编写一个框架(称为Lighthouse.framework),反过来,它使用来自另一个框架的代码(准确地说是RegexKit.framework).我已将RegexKit.framework复制到我自己的框架中,因此它具有如下结构:

Lighthouse.framework/
  Versions/
    A/
      Frameworks/
        RegexKit.framework
      Lighthouse
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行使用Lighthouse.framework(我的框架)的应用程序时,我收到以下错误:

dyld:未加载库:@executable_path /../ Frameworks/RegexKit.framework/Versions/A/RegexKit

参考自:/Users/mdippery/Developer/Projects/Current/lighthouse/build/Debug/Lighthouse.framework/Versions/A/Lighthouse

原因:找不到图像

显然,加载器没有找到RegexKit.

以下是加载器期望加载的路径,礼貌otool:

build/Debug/Lighthouse.framework/Versions/A/Lighthouse:
    /Users/mdippery/Library/Frameworks/Lighthouse.framework/Versions/A/Lighthouse (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 12.0.0)
    @executable_path/../Frameworks/RegexKit.framework/Versions/A/RegexKit (compatibility version 0.4.0, current version 0.6.0)
    /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.4)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 476.19.0)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 677.26.0)
Run Code Online (Sandbox Code Playgroud)

我可以在另一个框架中包含一个框架吗?这是正确的方法吗?我该如何解决我的错误?

xcode cocoa frameworks objective-c

8
推荐指数
2
解决办法
2241
查看次数

使用第三方静态框架作为单个框架构建Swift动态框架

试图为我的客户准备一个动态框架.我的框架(A.framework)使用第三方识别静态框架(B.framework).我无法向客户提供单独的A和B框架.理想情况下,应该构建B.framework并将其包含在我的A.framework的二进制文件中,因此客户的应用程序只会嵌入A.framework,而无需任何其他操作来链接该第三方应用程序.

我做了什么:

  1. 为项目添加了B.framework.
  2. 将B.framework添加到相应目标中的"链接框架和库".
  3. 内置A.framework.
  4. 创建了一个演示应用程序,并将A.framework包含在项目中.
  5. 将A.framework添加到"嵌入式二进制文件".
  6. 演示应用程序的构建失败,并显示消息"Missing required module'B'"(尽管它仅在A.framework中使用).

注意:

  • 我既没有为B.framework创建任何模块映射文件,也没有为其他运行脚本创建
  • 使A.framework静态是不可接受的,因为它包含一些资源(故事板,图标和一些其他文件)
  • 试图制作不推荐的"伞"框架,但在演示应用程序中加载B.framework的包
  • 试图通过在A.framework中简单地复制B.framework来制作虚假的"伞形"框架,但是在导出演示应用程序时出现了2个问题 - 大小的A.framework和Mach-O错误(因为动态A之间的Mach-O差异)和静态B框架)

任何想法都将受到高度赞赏!

UPD 1:这不是关于伞框架,因为正确的伞框架实现需要从bundle加载子框架,这是不好的.由于不同的Mach-O值(动态和静态),虚假框架实现(子框架简单地复制到伞)将不适用于发布.假伞框架具有巨大的尺寸,因为子框架被完全复制到伞内.

UPD 2:创建了一个小型测试项目:StaticFrameworkTest,它有3个子项目:

  1. 具有动态框架依赖性的演示应用程序(框架A),并且不应该对框架B有任何了解
  2. 具有静态框架依赖性(框架B)的动态框架,理想情况下应包含在框架的二进制文件中.
  3. 静态框架B.

frameworks dynamic-linking static-linking ios swift

7
推荐指数
1
解决办法
1213
查看次数

在框架中嵌入框架

假设我有两个框架 A 和 B,它们都是框架 C 所需要的。

框架 C 将被提供,以便第三方可以在他们的应用程序 (X) 中使用它。问题是,C 只是与 A 和 B 链接而不嵌入它们,这就是为什么 X 也需要链接到 A 和 B 以使 C 工作。

有没有办法让 C 嵌入 A 和 B,这样 X 就不需要链接到它们?

对我来说,一个理想的解决方案是应用程序 X 的开发人员只会链接到框架 C,导入相应的标头并完成它。鉴于 C 处理 A 和 B,开发人员不需要了解有关 A 和 B 的任何信息。

xcode objective-c ios xcode6

5
推荐指数
1
解决办法
4156
查看次数

如何在伞形框架中链接子框架?

我正在尝试创建一个包含各种第三者子框架的静态伞式框架。因此,我遵循了以下教程:

如何在iOS SDK中创建伞式框架?

不幸的是,当将静态伞框架添加到另一个项目中时,我从子框架中收到各种“未定义符号”错误。

当我像下面的图片一样在“链接库的二进制文件”中再次链接子框架时,它确实起作用。但是,如何防止需要这样做呢?我只希望外部开发人员将我的Umbrella框架添加到他的项目中。

将二进制文件与库图像链接

frameworks ios

5
推荐指数
1
解决办法
912
查看次数

如何制作伞框架,子框架错误

如何在xcode 8中制作伞形框架?我看到了 如何在iOS SDK中创建一个伞形框架?以及如何在另一个框架(Umbrella Framework)中添加框架,但我不能制作"Umbrella框架".不幸的是,当将伞框架添加到另一个项目中时,我从子框架中获得了各种"未定义的符号"错误.如何将子框架包含到伞中,我想在app中添加伞,而不是子框架.请有人帮我这个.

frameworks objective-c ios swift

5
推荐指数
0
解决办法
1044
查看次数