很抱歉出现Noob问题,但我很难弄清楚这一切是如何组合在一起的。
我用pod lib create创建了一个pod。我现在有了目录结构,并将我的类放入了Pod/classes中。
这听起来像是文档中的,我应该运行pod安装或pod更新,以便能够在开发模式中使用我的pod。我希望它能创建在如何使用Development Pod中提到的符号链接。
我有点被困在这里了——我错过了什么?如何开始使用Xcode来测试我的库?
感谢
使用创建示例项目时
pod lib create MyLib
CocoaPods创建了两个文件夹,一个名为Example
和Pod
,第一个是演示应用程序所在的位置,这个文件夹是用pod try MyLib
下载的。Pod
文件夹是pod文件所在的文件夹,Pod/Classes
用于.h和.m,Pod/Assets
用于图像、笔尖和其他资源。
- [MyLib]
-- [Example] // demo project
--- MyLib.xcworkspace
-- [Pod] // pod files, Podspec is looking at
--- [Classes] // .h, .m
--- [Assets] // resources, .png/.xib etc
-- Podspec
此外,它还为您的库创建了Podspec,您应该编辑它,使其包含正确的信息,默认情况下,它被配置为使用Pod/Classes
中的所有.h/.m和Pod/Assets
中的.png。这很重要,因为Example
文件夹中的演示项目依赖于它
在所有这些细节之后,解决方案:
- 打开MyLib.xcworkcpace
- a) 将项目导航器上的组/文件树扩展到
Pods/Development Pods/MyLib
,右键单击MyLib,将文件添加到"Pods",在Pod/Classes
中添加一些.h/.m(这很重要)
…或…
b) 手动将一些.h/.m复制到Pod/Classes
在终端中,转到示例文件夹并更新pod:
cd MyLib/Example pod update
现在,您可以使用
#import <someFile.h>
导入这些文件。
这是怎么回事
CocoaPods使用您的Podspec,它告诉它从Pod/Classes
获取文件,并将其符号链接到Example/MyLib
项目的Pods项目。在例如项目生成的Podfile中,您可以看到以下行:
target 'MyLib', :exclusive => true do
pod "MyLib", :path => "../"
end
注意:path
关键字,这意味着pod MyLib
将使用路径中的规则从podspec本地获取,并且不要干扰远程源。换句话说,它会找到你的Podspec,调查所需的文件是否在Pod/Classes
,而不是获取你的git存储库,它只会将它们符号链接到你的Pods项目。因此,您可以随心所欲地编辑它们,也可以随心所欲地执行pod update
,因为它只是符号链接您编辑过的文件。唯一的问题是,如果你添加更多的文件,你需要pod update
,这样它们就会被符号链接并添加到适当的pod目标。
请注意,CocoaPods创建了"Pods"项目,该项目为每个引用的pod都有一个目标,pod中的所有.m文件都被编译为.a文件并链接到您的应用二进制文件,头文件(.h)通过符号链接聚合到文件夹中,文件夹被附加到其他C标志,因此它们可以通过#import <%header%.h>
使用。这就是为什么你找不到任何用":path"关键字声明的pod的.m符号链接,因为.m文件在它们的位置上被pods项目目标直接引用。