我想创建一个共享的Swift库(又名Cocoa Touch Framework),以在我的两个iOS应用程序之间共享。我不是专职的iOS开发人员,所以我对XCode等的知识有很多空白。
我发现本文创建了您的第一个iOS框架,并认为我是免费的:-)。可悲的是,我无法使其正常运行,主要是因为我不知道自己要做什么。
我只想在两个应用程序之间创建一个共享的Swift代码的(私有)框架(库)。我想在框架中使用CocoaPods引入其他框架,例如Alamofire。我无意将此框架公开。
我几乎不明白为什么要使用Carthage(相对于CocoaPods)作为管理框架并将其导入使用的应用程序的机制。但是,该示例混合了Carthage和CocoaPods并设置了我不想要的Podspec,这使我感到困惑。
在本文中,总体上是子项目的概念,将Carthage下载的框架拖到框架中,然后将共享框架本身“导入”到使用的应用程序中,这一切都使我感到困惑。我想知道为什么要这么做以及它的后果。
所以,我会以错误的方式处理吗?是否有人在两个相关的应用程序之间私下共享Swift代码和其他工件的脑筋急转弯的简单配方?
谁能解释这个理论?
当我想到复制代码时,我几乎没有时间来处理我的应用程序,而且我的骨肉也在爬行,所以我浪费了无数的时间来尝试找到简单的指南,而浪费了更多的时间来尝试遵循我发现的指南,这一切都令人失望。
非常感激任何的帮助。
谢谢,彼得...
我建议您使用迦太基,因为它更简单并且不会对您的项目文件施加任何约束。我从未使用过CocoaPods,所以无法为您提供帮助,我将指导您完成迦太基的必要步骤:
如果尚未安装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模板创建一个新项目。保存时,选中“创建Git存储库”。
将.gitignore
文件添加到您的项目文件夹。如果您在项目目录中,则可以执行以下操作:
curl https://raw.githubusercontent.com/github/gitignore/master/Swift.gitignore > .gitignore
将您想要的代码添加到项目中,请记住,只有public
声明在框架外部可用。
编辑方案(Shortcut⌘<)并检查Shared
。这是迦太基工作所必需的。
提交更改(快捷方式⌥⌘C),检查每个文件(右键单击>全部检查),然后输入提交消息(例如“第一版”)
标记发行版(Carthage要求):命令(在项目目录中):
git tag 0.1 -m "Version 0.1"
运行以下命令以通过Carthage验证并构建项目:
carthage build --no-skip-current
您的框架现在应该设置为可以与Carthage一起使用。您可以按照此处的步骤将框架添加到您的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
并将每个框架添加到“输入文件”部分:
$(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
,迦太基将解析每个框架所需的所有子框架工作及其子框架工作,等等。
如果一个人Cartfile
想要"Alamofire" ~> "1.0"
而另一个人可能会发生冲突"Alamofire" ~> "2.0"
,但这很少发生。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句