添加从IPA中提取的swift框架

时间:2017-10-24 23:49:28

标签: xcode cocoapods ipa swift-framework

我正在尝试运行由另一个开发人员创建的IOS应用程序,该应用程序正在使用我无法访问的私有存储库中的cocoapod。我设法从IPA中提取.framework包并将其添加到xcode项目中但它没有被识别(我得到“没有这样的模块”)。

有可能做我想要实现的目标吗?

到目前为止,我已经尝试过了:

  • 在发布中构建它,因为我猜IPA中的框架正在发布
  • 将.framework添加为嵌入式二进制文件
  • 将.framework添加为链接框架和库
  • 将.framework复制到〜/ System / Library / Framework
  • 更新框架搜索路径,包括$(SRCROOT),递归,硬编码路径等。
  • 将.framework位置更改为“相对于构建产品”

谢谢!

2 个答案:

答案 0 :(得分:3)

从ipa文件中获取项目中使用的框架并不是那么容易。

当应用程序第一次运行时,同样在归档应用程序时,所有链接的.frameworks都将转换为动态库.dylib。

什么是静态库 - 在编译时链接的代码单元,不会更改。

什么是动态库 - 在运行时链接的代码和/或资产单元,可能会发生变化。

框架 - 框架是一个分层目录,它将动态库,头文件和资源(如故事板,图像文件和本地化字符串)封装到单个包中。使用框架的应用程序需要将框架嵌入应用程序包中。

动态图书馆

动态lib文件只驻留在框架文件夹中。

以下是Apple文档中的说明

  

外面的动态库   一个框架包,通常有文件扩展名.dylib,   iOS,watchOS或tvOS不支持,系统除外   Xcode提供的Swift库。

     

参考:Documentation

因此,您不能简单地将.dylib复制到xcode包并只使用它。也有某种安全性。

另一个approch

可以从.ipa文件反编译源代码。您将从以下链接中了解。

SO Question regarding decompiling of ipa file

Decompilation Possibility

答案 1 :(得分:0)

似乎将应用程序存档进行分发时,{。1work}和Headers文件夹已从.framework捆绑包中删除。

Modules文件夹包含Objective-C的.h标头,而Header文件夹包含Swift的.swiftmodule等效文件。

没有这些文件,您就没有框架二进制文件可使用的公共API,因此不幸的是,如果不进行逆向工程,这将使框架无法使用。