iOS组件化之组件创建(公有库)

最近时间不充裕重复的内容我就不写了,下面是我按照这片文章使用过程中遇到的问题,和一些细节的补充。在这里十分感谢作者,链接如下
iOS组件化
这个是远程公开库的创建,还有一种是远程私有库配合本地私有reop的创建方法(项目中需要使用的)本文可以用来做pod 和git的初级使用说明

第一个问题

在上文“ 三、关联git”中进行到

//关联不上我的githug仓库
git remote add origin  仓库地址

//报错没有及时记录抱歉 没有记错有这个错误
//There are no SSH keys associated with your account.  
//就是没有设置免登录的公钥。使用clone 后我使用的https 账号密码登录。

我的操作是直接在终端中
cd 到项目目录
执行git clone
然后 git push origin master -f
这是刷新github上的仓库页面就会看到新代码。

第二个问题

文中省略的TRUNetworking 关联git
在执行 git remote add origin 时遇到了 fatal: remote origin already exists.

解决方法:
先输入 git remote add origin 仓库地址

第三个问题 替换两个地址什么意思
iOS组件化之组件创建(公有库)_第1张图片
6879404-2aa9476dde0ee4e7.png

该描述没什么好说的,但是替换地址,开始有点蒙。想了下是要修改为知己github仓库的地址。
在你的仓库中点击clone or download (注意两个地址一个有.git 一个没有)
寻找的位置如下图


屏幕快照 下午10.26.39.png
问题四 检查podspec是否正确时 终端出现如下错误
//在终端中执行
pod lib lint --verbose
//错误如下
xcrun: error: unable to find utility "simctl", not a developer tool or in PATH
iOS组件化之组件创建(公有库)_第2张图片
xdrun_error.png

解决方案就是去xcode设置里面,将Command line Tools设置一下,在Xcode>preferences>Locations里面,设置(command line tools)之后再运行终端即可 解决原文链接

问题五 检查podspec是否正确时 终端出现如下错误
//在终端中执行
pod lib lint --verbose

错误如下


iOS组件化之组件创建(公有库)_第3张图片
屏幕快照上午11.37.59.png

问题的愿因时我没有给这个组件在github的仓库设置为Publish,而是设置了Private。

解决上面连个问题最终 成功!!!!!!


iOS组件化之组件创建(公有库)_第4张图片
屏幕快照 下午4.56.59.png
问题六 提交trunk版本的时候
//在终端执行
pod trunk push TRUNetworking.podspec --verbose

出现如下提示


屏幕快照 下午5.06.02.png

你需要注册trunk

//在终端执行 执行过着步骤你的邮箱会收到一个链接点击即可
pod trunk register [email protected] 'weng1250'  --verbose
//[email protected] 你接收邮件的邮箱 
//weng1250    你起的名字

//在点击邮件中的链接后执行
pod trunk me

iOS:手把手教你发布代码到CocoaPods(Trunk方式)

注册好了,哈哈这次再次在终端中执行

pod trunk push TRUNetworking.podspec --verbose

结果如下


iOS组件化之组件创建(公有库)_第5张图片
屏幕快照 下午5.17.27.png

好(F)开(U)心(C)哦(K)
哈哈,我的账号没有提交的权限。
按照上面的步骤重复创建一个自己的组件吧,最后成功。


iOS组件化之组件创建(公有库)_第6张图片
屏幕快照下午5.39.19.png
问题七 在更新组件的时候

iOS组件化之组件创建(公有库)_第7张图片
屏幕快照 上午10.12.20.png

Unable to determine Swift version for the following pods:
SWIFT_VERSION
解决方法

思考

1.如何理解组件间的相互依赖。比如 TRULongining必须倒入依赖的 TRUNetworking。
答:在spec文件是使用dependency 设置三房库依赖 并不会对其他组件带来影响,比如项目中有两个库要依赖 AFN。pod只会给你pod一个AFN。
2.组件中如何进行通信,传递数据。
答:组件见通讯,有许多知名三方,比如CTMedia MGJRouter等。各具特色,找到一个适合自己项目的。
3.如何分离出不同的组件。
答:可以分为 功能组件 基础组件 业务组件三大类
4.如何对资源引用(图片、视频等)
答:NSBundle * selfBundle = [NSBundle bundleForClass:[self class]];
NSString * imagePath = [selfBundle pathForResource:@"image1" ofType:@"png"]; 使用如下方法可以找到对应的资源。
方法二:
在 storyboard/xib 中可以直接访问图片,代码中访问的方法如下:
UIImage *image = [UIImage imageNamed:@"YourFramework.framework/imageName"]
注意:使用代码方式访问的图片不可以放在 xcassets 中,否则得到的将是 nil。并且文件名必须以 @2x/@3x 结尾,大小写敏感。因为 imageNamed: 默认在 main bundle 中查找图片。

你可能感兴趣的:(iOS组件化之组件创建(公有库))