最近时间不充裕重复的内容我就不写了,下面是我按照这片文章使用过程中遇到的问题,和一些细节的补充。在这里十分感谢作者,链接如下
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 仓库地址
第三个问题 替换两个地址什么意思
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
xdrun_error.png
解决方案就是去xcode设置里面,将Command line Tools设置一下,在Xcode>preferences>Locations里面,设置(command line tools)之后再运行终端即可 解决原文链接
问题五 检查podspec是否正确时 终端出现如下错误
//在终端中执行
pod lib lint --verbose
错误如下
屏幕快照上午11.37.59.png
问题的愿因时我没有给这个组件在github的仓库设置为Publish,而是设置了Private。
解决上面连个问题最终 成功!!!!!!
屏幕快照 下午4.56.59.png
问题六 提交trunk版本的时候
//在终端执行
pod trunk push TRUNetworking.podspec --verbose
出现如下提示
屏幕快照 下午5.06.02.png
你需要注册trunk
//在终端执行 执行过着步骤你的邮箱会收到一个链接点击即可
pod trunk register zilin_weng@163.com 'weng1250' --verbose
//zilin_weng@163.com 你接收邮件的邮箱
//weng1250 你起的名字
//在点击邮件中的链接后执行
pod trunk me
iOS:手把手教你发布代码到CocoaPods(Trunk方式)
注册好了,哈哈这次再次在终端中执行
pod trunk push TRUNetworking.podspec --verbose
结果如下
屏幕快照 下午5.17.27.png
好(F)开(U)心(C)哦(K)
哈哈,我的账号没有提交的权限。
按照上面的步骤重复创建一个自己的组件吧,最后成功。
屏幕快照下午5.39.19.png
问题七 在更新组件的时候
屏幕快照 上午10.12.20.pngUnable 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 中查找图片。
网友评论