【问题标题】:Framework procedure to create private framework with internal Pods for different 3rd party library used为使用的不同 3rd 方库创建带有内部 Pod 的私有框架的框架过程
【发布时间】:2016-05-12 11:04:08
【问题描述】:

我正在开发一个私有框架,为我们的客户提供他们项目的资源,这样他们就可以拖放到他们的项目中并开始使用。

为了避免不需要的库导入引用路径集和添加到构建设置工作,我提到构建框架来组织交付物是更好的解决方案,它可以满足 Watch OS、iPod、Ipad、iPhone 的所有需求。

我想创建一个通用框架,其中包含其他第 3 方使用的 pod。任何人都可以指导我完成这个过程,我如何实现这一点,使其尺寸紧凑,交付时除了我的接口文件外不暴露源代码。

预期结构。

MYCustomFramework

  • -----版本
  • --------- 一些资产包
  • --------- 第三方 Pod 库
  • --------------- 使用 Pod 的 XMPP 框架
  • --------------- 文档框架
  • --------------- 日志框架 -

然后我想将此框架添加到我的测试项目中,该项目将拥有自己的 Pod

MyTestProject.xcworkspace MyTestProject.xcproj MYCustomFramework.framework - 这将在内部编译所有以下括号内容,因此除了接口之外没有暴露源。 {

  • -----版本
  • --------- 一些资源包
  • --------- 第三方 Pod 库
  • --------------- 使用 Pod 的 XMPP 框架
  • --------------- 文档框架
  • --------------- 日志框架 }

如何实现这一点并使其尺寸尽可能小。

【问题讨论】:

    标签: ios cocoa-touch frameworks cocoapods podspec


    【解决方案1】:

    经过各种尝试,我终于按照以下方式完成了这项工作。

    1) Pods(测试项目发布)不能有许多第三方库的 Pods。 2 工作空间冲突,使用哪一个会很乏味。

    2) 创建一个测试项目并为此测试项目实现 Pods 并使用工作空间打开它。

    3) 使用 XMPP 框架库并在没有 Pod 的情况下提取文件夹和标题。

    4) 创建一个 Cocoa-touch Framework 并拖动这个 XMPPFramework 文件夹而不使用 Pods。

    5) 类似地使用手动过程将其他库集成到 My Cocoa-Touch Framework 中

    6) 编译我的框架并为(设备和模拟器)生成 mycustomframework.framework

    7) 我现在可以选择使用 LIPO 来创建聚合目标,以确保所有 XMPP 和其他 3rd 方库头文件在我的框架内都是私有的,并且只有我公开的公共头文件可用于测试项目集成。

    8) 只需拖动已编译的“.framework”文件或在我的测试项目中拖动库项目即可运行我的测试项目,这样也可以调试我的库代码。

    【讨论】:

      【解决方案2】:

      试试这个指南,你还必须将你的规范仓库添加到 Pod 仓库中 https://guides.cocoapods.org/making/private-cocoapods.html

      已编辑:

      我们有一个内部包装的 Fabric POD,它只提供我们从 Fabric 获得的 Fabric.framework(这是在 Fabric 拥有公共 pod 之前),这是我们的 pod 规范。 因此,在您的存储库中,您可以构建一个 .framework 并以与包装 Fabric 相同的方式交付它

      希望有帮助

      {
        "name": "InternalFabric",
        "version": "1.1.1",
        "summary": "Fabric is a 3rd party library that gives us crash analytics.",
        "homepage": "https://github.com/myNameHere",
        "authors": "myNameHere",
        "license": {
          "type": "Copyright",
          "text": "\n Copyright Acme Inc. 2014\n For internal Acme use only. \n"
           },  
        "platforms": {
          "ios": "7.0"
        },
        "source": {
          "git": "https://github.com/ios-yourLibs/Fabric.git"
        },
        "requires_arc": true,
        "default_subspecs": "Core",
        "subspecs": [
            {
              "name": "Core",
              "vendored_frameworks": ["Fabric.framework","Crashlytics.framework"]
            },
            {
              "name": "Crashlytics",
              "dependencies": {
                "Fabric/Core": [
      
                ]
              },
              "vendored_frameworks": "Crashlytics.framework"
            }
        ]
      }
      

      【讨论】:

      • 这只是解释私有框架的创建,而不是我的答案,我想创建我的库,所以我决定采用框架方法。然后我需要我的库中的 XMPP 框架作为依赖项,它只指向特定版本。所以我的 Pods 应该向最终用户提供一个嵌入了这个的 .framework。如何实现这一目标。
      • 谢谢大卫,我对这个 Pods 规格的东西有点陌生,虽然我认为你的观点几乎匹配,所以我会尝试做这个检查并回复你。顺便说一句,我们可以聊天以更清楚地了解此指导。我的 id : vickydhas@rappier.com/ Skype: vickydhas
      猜你喜欢
      • 1970-01-01
      • 2019-12-31
      • 2017-08-12
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 2015-05-19
      相关资源
      最近更新 更多