swift写自己的框架发布到cocoapods有一些注意点,如暴露文件,图片 xib资源用法等.这个流程会了后就很容易掌握组件化开发,组件化和发布到cocoapods上区别前者是自己私有远程索引库,后者索引库是公开远程master
发布到cocoapods 基本流程见链接 写的比较详细了,我主要说一下swift提交框架注意点.
- 打开终端 pod repo 可以查看cocoapods索引库
- 初始化一个git模板项目: 用$ pod lib create 工程名
效果如下,和远程git仓库关联时候由于gitignore文件可能关联不上,我的解决方式是把下面模板的git 和 gitignore文件删了,在这个文件夹 git clone 远程git url
这样就直接关联了
- podspec文件有依赖 有图片时候要安下面修改podspec文件
- OC有.h文件,可以直接用,swift默认访问级别internal,internal访问级别所修饰的属性或方法在源代码所在的整个模块都可以访问。
- 如果是框架或者库代码,则在整个框架内部都可以访问,框架由外部代码所引用时,则不可以访问。
所以要用public 修饰需要引用的类.(public
可以被任何人访问。但其他module中不可以被override和继承,而在module内可以被override和继承。) - 需要暴露的接口或者属性要用public修饰
- extension里面的方法都要用public
- 在项目里面 引用第三方框架 import JDPhotoBrowser
点进去可以看到
这些方法属性都是可以被访问的.其它没有被 public或open修饰的没法访问.
- 资源文件的引用
我们把图片放到 下图的位置,系统会打包到指定bundle里面
- 按下面步骤看bundle里的资源
- 用图片资源时候不能用mainbundel加载,要用currentBundel, 而且图片要写全名,要不然会崩溃的.
let currentBundle = Bundle(for: type(of: self))
(currentBundle 就是JDPhotoBrowser.framework)
// currentBundle.loadNibNamed("", owner: nil, options: nil) xib sb用这个方法取
//图片资源在 JDPhotoBrowser.framework 下面的JDPhotoBrowser.bundle里面,要用下面方法取
> var bundleName = (currentBundle.infoDictionary?["CFBundleName"] as! NSString).appending(".bundle")
let path = currentBundle.path(forResource: "blackall@2x.png", ofType: nil, inDirectory: bundleName)
let image = UIImage(contentsOfFile: path!)
最后在Podfile里 加入 pod "JDPhotoBrowser"
用pod install一下 这个图片浏览器框架就可以使用了.