用于为使用的不同第三方库创建具有内部Pod的私有框架的框架过程

时间:2016-02-03 10:03:22

标签: ios cocoa-touch frameworks cocoapods podspec

我正在开发一个私有框架,以便为我们的客户寻找他们的项目,这样他们就可以拖放他们的项目并开始使用。

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

我想创建一个带有其他第三方使用的pod的通用框架。任何人都可以指导我完成这个过程,如何实现这一目标,使其尺寸紧凑,除了我的界面文件外没有暴露源代码。

结构预期。

MYCustomFramework

  • -----版本
  • --------- Some Assets Bundle
  • ---------第三方豆荚图书馆
  • ---------------使用Pods的XMPP框架
  • ---------------文档框架
  • ---------------日志框架 -

然后我想将这个框架添加到My Test项目中,该项目将拥有自己的Pods

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

  • -----版
  • --------- Some Assets Bundle
  • ---------第三方豆荚图书馆
  • ---------------使用Pods的XMPP框架
  • ---------------文档框架
  • --------------- Logs Framework }

如何实现这一目标并尽可能缩小尺寸。

2 个答案:

答案 0 :(得分:1)

经过各种试验后,我终于按照以下方式开展了这项工作。

1)Pods(Test Project已发布)不能为拥有许多第三方的图书馆提供Pod。 2工作区冲突以及使用哪一个将是乏味的。

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

3)使用XMPP Framework库并解压缩没有Pod的文件夹和标头。

4)创建一个Cocoa-touch Framework并在不使用Pod的情况下拖动此XMPPFramework文件夹。

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

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

7)我可以选择使用LIPO来制作聚合目标,以确保我的框架内所有XMPP和其他第三方库头都是私有的,只有我公开的公共头文件可用于测试项目集成。

8)只需拖动已编译的' .framework'就可以运行我的测试项目。在我的测试项目中存档或拖动库项目,这样也可以调试我的库代码。

答案 1 :(得分:0)

尝试本指南,您还必须将您的规格回购添加到pods回购 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"
      }
  ]
}