主骨架私有库 (组件化第三步)

第一步 cd 到 remoteLib 文件夹下面
使用  pod lib create Main 创建模板
主骨架私有库 (组件化第三步)_第1张图片
WeChat19bd0febbb5a9074515adf0458e9a00b.png

回答一些问题

主骨架私有库 (组件化第三步)_第2张图片
屏幕快照 2018-11-22 下午2.06.08.png

第二步 需要的文件 copy 到 Classes 文件夹下面
主骨架私有库 (组件化第三步)_第3张图片
WeChat0b2c38e995de0612bd82a52f4fccf509.png

第三步 cd 到 Example 下面

执行 pod install 安装

然后把之前的代码拿过来
主骨架私有库 (组件化第三步)_第4张图片
WeChatabd99e5e3e240249adc2a738b1a7664b.png

因为这里引用了 UIView 的分类, 之前我们把这个做成了私有库了, 那么我们就可以直接 pod 过来

第四步 需要编辑 spec 文件和 podfile 文件 如图

主骨架私有库 (组件化第三步)_第5张图片
屏幕快照 2018-11-22 下午2.32.37.png
主骨架私有库 (组件化第三步)_第6张图片
屏幕快照 2018-11-22 下午2.32.43.png
 在执行 pod install 即可
主骨架私有库 (组件化第三步)_第7张图片
屏幕快照 2018-11-22 下午2.34.11.png

如果遇到加载 xib 的 View 则会报错
主骨架私有库 (组件化第三步)_第8张图片
屏幕快照 2018-11-22 下午2.50.25.png

那是因为加载方式错了, 因为不已经不在主骨架中 就是说路径变了 需要使用

主骨架私有库 (组件化第三步)_第9张图片
屏幕快照 2018-11-22 下午5.38.21.png
这种加载方式 

[NSBundle bundleForClass:[self class]]

注: 如果说本身写错了 不能在 pod 里面直接改 要在外面改了之后 重新把代码拖进去在重新 pod install下 在clean 一下 重新跑就没有问题

私有库 引用资源文件

第一步 把你需要的图片都按照@2x @3x 放在一个文件夹下面
主骨架私有库 (组件化第三步)_第10张图片
WeChat44b5ff64e4f78104753d806da3beeebe.png

第二步 修改 spec 文件,

如果 你直接拖过来 直接 pod install 是没有用的 所以需要修改 spec 文件在 pod  install
主骨架私有库 (组件化第三步)_第11张图片
WeChatb663fc3a5aa68ba3ce129d32e0073a77.png

再跑程序 会发现还是没有图片 原因是加载的路径不对 那么
主骨架私有库 (组件化第三步)_第12张图片
WeChatfcce77835c9a1ffe07e6640bcca17dfc.png
主骨架私有库 (组件化第三步)_第13张图片
屏幕快照 2018-11-23 上午11.34.15.png
主骨架私有库 (组件化第三步)_第14张图片
WeChat91229b013245eb6f5ef21cce2fcde272.png
主骨架私有库 (组件化第三步)_第15张图片
WeChat7f4c41ecbb27f36bb4dd7efd411a1c65.png

最后在 clean 下 在重新跑就 OK 了

主骨架私有库 (组件化第三步)_第16张图片
屏幕快照 2018-11-23 上午11.37.14.png
如果说是代码加载的图片则使用一下的加载方式
 //当前文件的 bundle
    NSBundle *currentBundler = [NSBundle bundleForClass:[self class]];
    //获取屏幕 pt 和 px 之间的比例
    NSInteger scale = [UIScreen mainScreen].scale;
    NSString *imgName = [NSString stringWithFormat:@"%@@%zdx.png",[dict objectForKey:@"img"],scale];
    
    //得到图片的路径
    NSString *imgPath = [currentBundler pathForResource:imgName ofType:nil inDirectory:@"YFRetailUserCenter.bundle"];
主骨架私有库 (组件化第三步)_第17张图片
屏幕快照 2018-11-23 下午1.12.48.png
或者自动识别名字, 不用写死 bundle 名字


NSBundle *currentBundle = [NSBundle bundleForClass:[self class]];
NSString *currentBundleName = currentBundle.infoDictionary[@"CFBundleName"];


NSString *noLoadingImgPath = [currentBundle pathForResource:@"[email protected]" ofType:nil inDirectory:[NSString stringWithFormat:@"%@.bundle", currentBundleName]];
self.noDataLoadView.noDataImg = [UIImage imageWithContentsOfFile:noLoadingImgPath];

主骨架私有库 (组件化第三步)_第18张图片
WeChat52495adba7e6ce0713b5ef8884f79125.png

只要测试通过, 那么就需要上传到远程代码仓库

(1) 在 coding 首先创建一个私有的代码库  

(2) 编辑这个组件的 spec 文件 

主骨架私有库 (组件化第三步)_第19张图片
屏幕快照 2018-11-23 下午1.20.52.png
(3)  提交到本地

git add .

git commit -m’x’

git remote 

git remote add origin https://git.coding.net/wyxlh/YukiMain.git(关联仓库)

git push origin master 推送到远程仓库

(4) 打 tag

git tag (查看下)

git tag ‘0.1.0’

git push —tags

 最后在验证下 pod spec lint

主骨架私有库 (组件化第三步)_第20张图片
屏幕快照 2018-11-23 下午2.13.24.png

这里因为验证的时候 是去找的官方的源, 而 YukiBase/Category 是我们自己的源 这个可以不管

主骨架私有库 (组件化第三步)_第21张图片
屏幕快照 2018-11-23 下午2.18.00.png
这里又报了一个 resource_bundles的问题 经过检查是因为资源文件缓存问题  那么久需要重新提交一次

清空缓存

pod cache clean — all


然后如果说你出现了警告 那么可以这样

pod repo push Yuki Main.podspec —allow-warnings


删除本地 tag
git tag -d ‘0.2.0’

删除远程 tag
git push origin :refs/tags/标签名 (git push origin :refs/tags/0.1.3)或者(git push origin :0.1.3

10 统一披露 API

就是把你写的用一个类来调用各个类的方法 便于别人直接使用

你可能感兴趣的:(主骨架私有库 (组件化第三步))