Swift, iOS 8+ 框架
Swift, iOS 8+ Framework
我想创建一个共享 Swift 库 a.k.a。 Cocoa Touch Framework 在我的两个 iOS 应用程序之间共享。我不是全职 iOS 开发人员,所以我在 XCode 等方面的知识有很多差距
我找到了这篇文章 Creating your first iOS Framework 并认为我有空回家 :-)。可悲的是,我无法让它工作,主要是因为我不知道我要做什么。
我只是想在我的两个应用程序之间创建一个共享 Swift 代码的(私有)框架(库)。我想在框架中使用 CocoaPods 来引入其他框架,例如 Alamofire。我无意制作这个框架public.
我几乎不明白为什么人们会使用 Carthage(相对于 CocoaPods)作为管理框架并将其导入消费应用程序的机制。但是,该示例混合了 Carthage 和 CocoaPods 并设置了一个 Podspec,我认为我不想要它并且让我感到困惑。
在这篇文章中,一般的子项目的概念,将 Carthage 下载的框架拖到框架中以及 "importing" 消费应用程序中的共享框架本身都让我感到困惑。我想知道我为什么这样做以及它的后果是什么。
所以,我是不是走错了路?有没有人有在两个相关应用程序之间私下共享 Swift 代码和其他工件的脑死亡简单方法?
谁能解释一下这个理论?
我几乎没有时间处理我的应用程序,一想到复制代码,我的肉体就会爬行,所以我浪费了无数时间试图找到那个简单的指南,并花了更多时间试图遵循我找到的那些 -一切都以令人失望的结局。
如有任何帮助,我们将不胜感激。
谢谢,
彼得...
我建议你使用 Carthage,因为它更简单并且不会对你的项目文件施加任何限制。我无法在 CocoaPods 方面为您提供帮助,因为我从未使用过它,我将指导您完成 Carthage 所需的步骤:
如果您还没有安装 Homebrew,它是 OSX 上最常用的包管理器。命令:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装迦太基。命令:
brew update && brew install carthage
使用 iOS Cocoa Touch Framework 模板创建一个新项目。保存时勾选"Create Git repository".
将 .gitignore
文件添加到您的项目文件夹。如果你在项目目录中,你可以这样做:
curl https://raw.githubusercontent.com/github/gitignore/master/Swift.gitignore > .gitignore
将你想要的代码添加到项目中,记住框架外只有public
个声明可用。
编辑方案(快捷键 ⌘<)并勾选 Shared
。这是 Carthage 工作所必需的。
提交更改(快捷键 ⌥⌘C),检查每个文件(右键单击 > 全部检查)并输入提交消息(例如 "First version")
发布标签(Carthage 要求):命令(在项目目录中):
git tag 0.1 -m "Version 0.1"
运行 以下命令通过 Carthage 验证和构建项目:
carthage build --no-skip-current
您的框架现在应该设置为可以与 Carthage 一起使用。您可以按照 here 的步骤将框架添加到您的 iOS 项目:
向您的项目添加一个 Cartfile(只是一个名为 Carthage
的文件(无扩展名)),您可以为此使用 Xcode。该文件应包含以下内容:
git "file:///path/to/your/framework/project/directory"
github "Alamofire/Alamofire"
# Other frameworks
运行
carthage update --platform iOS
打开 Carthage/Build/iOS
文件夹(在 Finder 中)并将每个 .framework
文件拖放到项目设置(常规选项卡)中的 Linked Frameworks and Libraries
部分).
添加新的 Run Script
阶段(项目设置 > 构建阶段 >“+”按钮)。把行
/usr/local/bin/carthage copy-frameworks
并将每个框架添加到 "Input Files" 部分:
$(SRCROOT)/Carthage/Build/iOS/MyFramework.framework
$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
现在这应该可以了,如果您遇到问题请告诉我。
编辑:当您对库进行更改时,您会这样做:
- 提交
git tag 0.2 -m "Version 0.2"
在您使用该框架的项目中,只需 运行 carthage update --platform iOS
,无需执行其他操作。
如果您的框架也需要使用 Alamofire,它需要与其他项目相同的 Cartfile
设置。 运行宁carthage update
时,Carthage会解析每个框架需要的所有子框架,以及它们的子框架等
可能会发生冲突,例如一个 Cartfile
想要 "Alamofire" ~> "1.0"
,另一个 "Alamofire" ~> "2.0"
,但这很少发生。
我想创建一个共享 Swift 库 a.k.a。 Cocoa Touch Framework 在我的两个 iOS 应用程序之间共享。我不是全职 iOS 开发人员,所以我在 XCode 等方面的知识有很多差距
我找到了这篇文章 Creating your first iOS Framework 并认为我有空回家 :-)。可悲的是,我无法让它工作,主要是因为我不知道我要做什么。
我只是想在我的两个应用程序之间创建一个共享 Swift 代码的(私有)框架(库)。我想在框架中使用 CocoaPods 来引入其他框架,例如 Alamofire。我无意制作这个框架public.
我几乎不明白为什么人们会使用 Carthage(相对于 CocoaPods)作为管理框架并将其导入消费应用程序的机制。但是,该示例混合了 Carthage 和 CocoaPods 并设置了一个 Podspec,我认为我不想要它并且让我感到困惑。
在这篇文章中,一般的子项目的概念,将 Carthage 下载的框架拖到框架中以及 "importing" 消费应用程序中的共享框架本身都让我感到困惑。我想知道我为什么这样做以及它的后果是什么。
所以,我是不是走错了路?有没有人有在两个相关应用程序之间私下共享 Swift 代码和其他工件的脑死亡简单方法?
谁能解释一下这个理论?
我几乎没有时间处理我的应用程序,一想到复制代码,我的肉体就会爬行,所以我浪费了无数时间试图找到那个简单的指南,并花了更多时间试图遵循我找到的那些 -一切都以令人失望的结局。
如有任何帮助,我们将不胜感激。
谢谢, 彼得...
我建议你使用 Carthage,因为它更简单并且不会对你的项目文件施加任何限制。我无法在 CocoaPods 方面为您提供帮助,因为我从未使用过它,我将指导您完成 Carthage 所需的步骤:
如果您还没有安装 Homebrew,它是 OSX 上最常用的包管理器。命令:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装迦太基。命令:
brew update && brew install carthage
使用 iOS Cocoa Touch Framework 模板创建一个新项目。保存时勾选"Create Git repository".
将
.gitignore
文件添加到您的项目文件夹。如果你在项目目录中,你可以这样做:curl https://raw.githubusercontent.com/github/gitignore/master/Swift.gitignore > .gitignore
将你想要的代码添加到项目中,记住框架外只有
public
个声明可用。编辑方案(快捷键 ⌘<)并勾选
Shared
。这是 Carthage 工作所必需的。提交更改(快捷键 ⌥⌘C),检查每个文件(右键单击 > 全部检查)并输入提交消息(例如 "First version")
发布标签(Carthage 要求):命令(在项目目录中):
git tag 0.1 -m "Version 0.1"
运行 以下命令通过 Carthage 验证和构建项目:
carthage build --no-skip-current
您的框架现在应该设置为可以与 Carthage 一起使用。您可以按照 here 的步骤将框架添加到您的 iOS 项目:
向您的项目添加一个 Cartfile(只是一个名为
Carthage
的文件(无扩展名)),您可以为此使用 Xcode。该文件应包含以下内容:git "file:///path/to/your/framework/project/directory" github "Alamofire/Alamofire" # Other frameworks
运行
carthage update --platform iOS
打开
Carthage/Build/iOS
文件夹(在 Finder 中)并将每个.framework
文件拖放到项目设置(常规选项卡)中的Linked Frameworks and Libraries
部分).添加新的
Run Script
阶段(项目设置 > 构建阶段 >“+”按钮)。把行/usr/local/bin/carthage copy-frameworks
并将每个框架添加到 "Input Files" 部分:
$(SRCROOT)/Carthage/Build/iOS/MyFramework.framework $(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
现在这应该可以了,如果您遇到问题请告诉我。
编辑:当您对库进行更改时,您会这样做:
- 提交
git tag 0.2 -m "Version 0.2"
在您使用该框架的项目中,只需 运行 carthage update --platform iOS
,无需执行其他操作。
如果您的框架也需要使用 Alamofire,它需要与其他项目相同的 Cartfile
设置。 运行宁carthage update
时,Carthage会解析每个框架需要的所有子框架,以及它们的子框架等
可能会发生冲突,例如一个 Cartfile
想要 "Alamofire" ~> "1.0"
,另一个 "Alamofire" ~> "2.0"
,但这很少发生。