Swift,iOS 8+框架

我想创build一个共享的Swift库(也就是Cocoa Touch Framework)来在我的两个iOS应用程序之间共享。 我不是一个全职的iOS开发人员,所以我在XCode等知识上有很多空白。

我发现这篇文章创build你的第一个iOS框架,并认为我是免费的家庭:-)。 可悲的是,我不能工作,主要是因为我不知道我在做什么。

我只是想在我的两个应用程序之间创build一个共享Swift代码的(私有)框架(库)。 我想在框架中使用CocoaPods来引入其他框架,如Alamofire。 我不打算公开这个框架。

我几乎不明白为什么用Carthage(vs. CocoaPods)作为pipe理框架并将其导入消费应用程序的机制。 但是,这个例子混合了Carthage和CocoaPods,并build立了一个我认为不需要的Podspec,并让我困惑。

在文章中,总的来说,子项目的概念,拖动迦太基下载的框架进入框架,并在消费应用程序“import”共享框架本身都混淆了我。 我想知道我为什么这样做,以及它的后果是什么。

那么,我是否以这种错误的方式去做? 有没有人有一个脑死亡简单的秘诀在两个相关的应用程序之间私下共享Swift代码和其他工件?

有谁能解释这个理论吗?

当我考虑重复代码时,我得到的时间很less,我的应用程序和我的肉体爬行,所以我浪费了无数小时试图find那个简单的指南和更多的时间试图跟随我发现的 – 所有的令人失望的结局。

非常感激任何的帮助。

谢谢彼得

我build议你使用迦太基,因为它更简单,不会对你的项目文件施加任何限制。 我无法帮助您使用CocoaPods,因为我从来没有使用它,我将引导您完成迦太基所需的步骤:

  1. 如果你还没有安装Homebrew ,那么这是OSX上最常用的软件包pipe理器。 命令:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 
  2. 安装迦太基。 命令:

     brew update && brew install carthage 
  3. 使用iOS Cocoa Touch Framework模板创build一个新的项目。 保存时,选中“创buildGit存储库”。

  4. .gitignore文件添加到您的项目文件夹。 如果你在项目目录中,你可以这样做:

     curl https://raw.githubusercontent.com/github/gitignore/master/Swift.gitignore > .gitignore 
  5. 将所需的代码添加到项目中,请记住只有public声明在框架外部可用。

  6. 编辑scheme(快捷键⌘<)并选中Shared 。 这是迦太基工作所必需的。

  7. 提交更改(快捷键⌥⌘C),检查每个文件(右键单击>全部检查)并input提交消息(例如“第一个版本”)

  8. 标签释放(迦太基要求):命令(在项目目录中):

     git tag 0.1 -m "Version 0.1" 
  9. 运行以下命令以通过Carthagevalidation和生成项目:

     carthage build --no-skip-current 

现在你的框架应该和迦太基一起工作。 您可以按照此处的步骤将框架添加到您的iOS项目中:

  1. 添加一个cartfile到你的项目(简单地说是一个名为Carthage的文件(没有扩展名)),你可以使用Xcode。 该文件应该包含这个:

     git "file:///path/to/your/framework/project/directory" github "Alamofire/Alamofire" # Other frameworks 
  2.  carthage update --platform iOS 
  3. 打开Carthage/Build/iOS文件夹(在Finder中),并将每个.framework文件拖放到项目设置(常规选项卡)中的Linked Frameworks and Libraries部分。

  4. 添加一个新的Run Script阶段(项目设置>构build阶段>“+”button)。 放行

     /usr/local/bin/carthage copy-frameworks 

    并将每个框架添加到“input文件”部分:

     $(SRCROOT)/Carthage/Build/iOS/MyFramework.framework $(SRCROOT)/Carthage/Build/iOS/Alamofire.framework 

现在这应该工作,让我知道如果你卡在某个地方。

编辑:当你更改图书馆,你这样做:

  1. 承诺
  2. git tag 0.2 -m "Version 0.2"

在使用框架的项目中,只需运行carthage update --platform iOS ,不需要做任何事情。

如果您的框架也需要使用Alamofire,它需要与其他项目相同的Cartfile设置。 在运行迦太基carthage update ,迦太基将解决每个框架所需的所有子帧工作,以及它们的子帧工作等。

如果一个Cartfile "Alamofire" ~> "1.0" ,另一个"Alamofire" ~> "2.0" ,但是很less会发生"Alamofire" ~> "2.0"