我已经使用本教程创建了一个简单的私有pod:http://pablin.org/2013/05/18/cocoapods-for-internal-libraries/
事实上我的回购只有一组课程
一切都好,我可以完美安装我的吊舱。唯一的问题是所有文件都安装在主文件夹内,因此它不会保留文件夹结构。
我有这个文件夹结构,名为:myRepository
的存储库 Classes
|
------ foo.h and foo.m
------ Controller Layer
|
----------- foo2.h and foo2.m
------ ViewLayer
|
----------- foo3.h and foo3.m
所有文件都复制到名为myRepository的文件夹中。
这是我的podspec:
Pod::Spec.new do |s|
s.name = "fooClasses"
s.version = "0.0.1"
s.summary = "Common clases of foo"
s.homepage = "http://foo.com"
s.license = 'BSD'
s.license = { :type => 'Foo License', :file => 'LICENSE.txt' }
s.author = { "me" => "me@me.com" }
s.platform = :ios, '7.0'
s.source = { :git => "https://github.com/myRepository.git", :tag => "0.0.1" }
s.source_files = "**/*.{h,m}"
s.requires_arc = true
end
我尝试过使用s.preserve_path =“*”和s.preserve_path =“Classes”
有什么想法吗?
!!!!!!!!
由于答案 0 :(得分:14)
我已经完成了使用subspec创建自己的文件夹。
您可以使用以下行创建子规范:
s.subspec 'folder name' do |ss|
ss.source_files = 'files'
ss.frameworks = 'frameworks'
end
ss.frameworks不是强制性的。
您可以从CocoaPods邮件列表中看到完整的答案:
https://groups.google.com/forum/#!topic/cocoapods/0kV8r2xnqA8
谢谢mcitrrus
我更喜欢关注AFNetworking pod规范:
https://github.com/AFNetworking/AFNetworking/blob/master/AFNetworking.podspec
答案 1 :(得分:2)
如果你经常使用开发 pod,那么 cocoapods 创建的默认项目结构会有很多问题:
如果您的 source_files
/ resources
等根目录中没有至少一个文件,则根目录在项目中不会获得等效组.
组的 location 指向 pod 目录的根目录(不一定是源文件所在的位置)。这意味着您不能只是右键单击该组并“添加文件”,因为它会将文件放在错误的位置。
模块之间的组和文件的顺序不同,因为事物是按名称排序的,而且您的 pod 显然具有不同的名称,这些名称可能出现也可能不会出现在 Frameworks
/ Pods
/ {{1 之前}} / Dependencies
。
我一直在寻找解决上述所有问题的解决方案,最终得出以下解决方案:
我使用如下目录结构设置了我的 Pod(示例显示名为 Support Files
的 Pod)
SomeLib
在您的 Example/
SomeLib-Example/...
SomeLib-Example.xcodeproject
fix_project_structure (this is an empty text file)
SomeLib.podspec
Sources/
FolderA/
ClassA.swift
FolderB/
ClassA.swift
Tests/
fix_project_structure (another empty text file)
FolderA/
ClassATests.swift
FolderB/
ClassBTests.swift
文件中,我们利用位于根目录中的空 podspec
来修复组结构...
fix_project_structure
这实际上是一个可选步骤(见评论)
将以下 s.source_files = 'Sources/**/*.{swift}', 'fixup_project_structure'
s.resource_bundles = {
s.name => ['Sources/**/*.{xcassets,json,storyboard,xib,xcdatamodeld}', 'fixup_project_structure']
}
s.test_spec 'Tests' do |test_spec|
test_spec.source_files = 'Tests/**/*', 'Tests/fix_project_structure'
end
步骤添加到您的 post_integrate
...
Podfile
答案 2 :(得分:0)
由于0.36版cocoapods的变化,这个答案/问题已经过时。
只要您使用“:path”窗格,PR 2647就会添加默认分组行为。从1.3.1开始,行为是它将遍历/ Classes / ...结构,直到它看到文件或第二个子文件夹并从.xcodeproj文件中开始分组。