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 rm origin 再执行 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.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 中查找图片。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近在学习vue.js的时候发现,vue的组件化的思想对于编写代码是一个非常有用的事情。 首先为什么需要组件化? ...
    拂晓的云阅读 11,994评论 6 23
  • 什么是组件化开发,我就不详细介绍了,网上可以找到很多资料.IOS-组件化架构漫谈这篇文章就比较全面的介绍了组件化开...
    predecessor阅读 4,073评论 0 5
  • 好久没有下这样的雨了,仿佛乌云驻足在这里,一动不动,稳稳的下着,没有一丝风,雨滴直上直下地落在地上,马路变湿,开始...
    伍七九阅读 1,170评论 0 1
  • 不同的人生,终究有你的使命。 我今年二十岁,错过了人生最美好的大学时光,错过了最忐忑不安的高考,错过了最好的年纪遇...
    成南叔叔阅读 3,511评论 1 6
  • 开始慢慢意识到自己习惯否定对方的沟通方式,尤其和老公相处,很习惯用否定或是纠正来回应他。情绪,看到这个模式,内在是...
    张燕娟的成长家园阅读 3,443评论 0 0