iOS组件化开发之路
文章平均质量分 61
iOS组件化开发过程中遇到的各种问题,以及解决这些问题的思路,过程,方案
JackLee18
这个作者很懒,什么都没留下…
展开
-
iOS开发沙盒管理工具swift版
之前组件化开发的时候,有写过一个OC版本的沙盒文件管理工具,最近将代码整理优化了一个swift版本,整理如下:import Foundationextension String { var `extension`:String { if let index = self.lastIndex(of: ".") { return String(self[index...]) } else { return ""原创 2021-08-27 21:38:54 · 640 阅读 · 0 评论 -
cocoapod实现原理
最近在进行项目优化,有些方面需要对cocoapod进行深入的了解,从网上找到一篇很好的文章分享给大家。转载自《CocoaPods 都做了什么?》 地址:https://draveness.me/cocoapods/备注:作者很厉害,大家可以仔细看看作者其他的博客 稍有 iOS 开发经验的人应该都是用过 CocoaPods,而对于 CI、CD 有了解的同学也都知道 Fastlane。而这两个在 iOS 开发中非常便捷的第三方库都是使用 Ruby 来编写的,这是为什么? 先抛开这个话题不谈,我们转载 2020-08-15 08:01:43 · 1592 阅读 · 0 评论 -
iOS实现pod库以framework形式集成
iOS开发过程中,随着项目的业务复杂度不断提高,引入的第三方库也逐渐增多,之前是通过源码的形式集成进行编译,每次切换分支,或者切换scheme时,编译时间特别的长,严重的影响了开发效率。最近通过cocoapod插件的形式实现了通过framework的形式集成pod库,分享给大家。 主要原理使用cocoapod插件cocoapods-binary将pod库在pod install的时候编译成framework.操作步骤1,安装bundlersudo gem install bundler2,原创 2020-07-14 23:49:58 · 1989 阅读 · 2 评论 -
JKRouter增加黑白名单制度啦
最近对JKRouter进行了升级,主要问题是解决路由跳转的内部web容器,外部web容器的选择,以及恶意路由的禁止,具体代码如下:JKRouterExtension.h/** 验证是否是白名单的url notice:方法可以通过重写,内部实现正则或者其他的校验策略验证是否是白名单的链接 @param url 链接 @return 是否是白名单url */+ (BOOL)isVe...原创 2019-07-01 08:04:28 · 281 阅读 · 0 评论 -
iOS开发组件化之组件的国际化处理
在进行组件化开发的时候,有时候需要对业务组件进行国际化的配置操作,但是又不想把这些文件放到主app中,针对这种情况我们可以把组件化的国际化配置文件放到组件中,由相关的组件开发人员进行配置,这样稳定性强,责任明确。方便管理。为了实现这个操作,我这边对JKSandBoxMananger这个组件库进行了升级,增加了两个方法具体如下:/** 根据key获取本地化对应的value只能获取mainB...原创 2019-07-16 21:48:51 · 1742 阅读 · 0 评论 -
JKRouter实现通过url切换web容器
在一个大型的app中,我们会发现经常会有多个web容器,不同的web容器有不同的特性,当然了也可能是为了安全的考虑需要切换web容器。 为了实现通过url切换web容器,我在JKRouterExtension文件中增加了如下方法:/** web容器类型的索引和jkWebVCClassNames结合起来使用 @return webTypeKey的字符串 */+ (NSString...原创 2018-11-16 17:05:28 · 285 阅读 · 0 评论 -
JKRouter完美实现微信小程序的跳转
随着小程序(快应用)的发展,目前,微信,头条。阿里。美团。等知名大厂都在开发自己的小程序应用系统。原创 2018-10-30 18:04:42 · 1157 阅读 · 0 评论 -
iOS组件化开发之jenkins自动打包
在进行iOS组件化开发的过程中,自动化打包是必不可少的。很多小伙伴会抱怨说,没有打包机,老板比较抠门,针对这种情况,个人感觉还是换一家公司吧, 打包机都不愿意购买的公司,对于提高效率的重视程度不够,还搞什么组件化开发呢。当然了我们还是要努力争取一下,说服somebody去给我们买机器设备。毕竟开展组件化开发对自己对团队都是一个很大的提升机遇。当然了,基于我这边的条件有限,我这边开展的自动化打包...原创 2018-07-31 11:43:35 · 1293 阅读 · 0 评论 -
iOS组件化开发之不支持use_framework的第三方组件处理
在进行iOS组件化开发时常常遇到某些供应商或者第三方的组件不支持use_framework。具体原因:第三方库很久没人维护了, 某些供应商其实也是把别人的库包了一层。当然了还有一些别的原因。 以友盟为例。传统的方法就是使用友盟的库,生成framework,然后将framework封装到自己的组件中。这样做的好处是,大家都想得到,都会做。但是缺点非常的明显,就是升级的时候比较麻烦,由于第三方...原创 2018-09-27 09:14:12 · 2706 阅读 · 0 评论 -
JKRouter更新之present带导航栏的控制器
随着JKRouter的持续更新,小伙伴们的反响不错,最近发现在app开发的过程中有一个特殊的需求就是present的控制器,带导航栏。针对这种情况,我这边对JKRouter做了升级,具体效果如下: 使用起来也非常的简单,具体代码如下: RouterOptions *options = [RouterOptions optionsWithTransformStyle:Rou...原创 2018-06-13 16:29:57 · 532 阅读 · 0 评论 -
iOS组件化开发过程中小版本管理的思考探索
在进行组件化开发的过程中,组件开发过程通常会伴随着bug修复,功能完善等等原因出现了很多的小版本,当组建功能完善稳定后,这些小版本的作用就显得不那么大了,而且随着不断的开发迭代,我们组件的小版本会越来越多,给我们对版本的判断,识别带来不必要的麻烦。为了解决这个问题,我写了一个shell脚本来解决这个问题。具体代码如下:echo "请输入要删除的pod库版本号:"#获取终端输入的版本...原创 2018-05-17 22:53:45 · 926 阅读 · 0 评论 -
JKRouter路由跳转中文使用手册
JKRouter经历多次迭代版本终于稳定了,为了方便大家接入使用,我特意写了这篇文章。之前没有了解过JKRouter的小伙伴可以先看看这连篇博客《iOS路由跳转(二)之需求分析》《JKRouter路由跳转解决了哪些问题》。1,JKRouter接入在项目中创建podfile文件,将pod "JKRouter"复制到podfile中,然后执行pod install就可以了。注:(建议从原创 2018-03-11 21:02:19 · 1671 阅读 · 0 评论 -
JKRouter路由跳转解决了哪些问题
2017年元旦开始构思设计路由跳转机制,中间经历了很多次的迭代,每一次迭代,都绞尽脑汁,力争做到完美,更完美。每一次迭代完了,都觉得很完美了,过了一段时间后,又发现仍然还有一些不足。然后继续构思,继续迭代。直到最近,经过不断的迭代,在自己公司中的项目中也大范围使用了。版本也基本稳定了,关于JKRouter的优点,之前在迭代的过程中也写了相关的博客,但是还不够完善。这里我重新梳理一下。1...原创 2018-03-10 22:11:32 · 750 阅读 · 0 评论 -
iOS路由跳转(五)之JKRouter 2.0 脱胎换骨
经过一段时间的使用,以及对于需求的复杂化,JKRouter暴露出来了很多的问题。下面我就会将这些问题一一列出来。 1,不能够使用xib,storyboard文件的跳转。 由于JKRouter使用了kvc赋值以及目标UIViewController对象的创建是通过[NClassFromString(vcCalssName) new] ,但是xib,storyboard的ViewControl...原创 2017-12-17 23:52:33 · 1353 阅读 · 0 评论 -
iOS路由跳转(四)之JKRouter持续更新1
经过前面《iOS路由跳转(一)之初识URL》,《iOS路由跳转(二)之需求分析》,《 iOS路由跳转(三)之JKRouter基础教程1 》,《 iOS路由跳转(三)之JKRouter基础教程2 》这几篇博客,对与JKRouter的思想阐述的已经比较详细了,接下来我会根据在使用过程中JKRouter遇到的问题,以及特殊需求进行持续的优化更新。更新1原来:/**解析JSO...原创 2017-05-12 21:42:10 · 2085 阅读 · 0 评论 -
iOS路由跳转(三)之JKRouter基础教程2
接上篇《 iOS路由跳转(三)之JKRouter基础教程1》 主要讲了JKRouter本类的跳法转的方和配置类。这一篇主要讲一下Json文件解析和权限操作的两个类。这两个类的方法在现具体实现时都需要通过重载在根据自己的实况际情实现。JKAccessRightHandler/** 对传入的URL进行安全性校验,防止恶意攻击 @param url 传入的url字符串 @retu...原创 2017-03-21 14:44:47 · 1803 阅读 · 0 评论 -
iOS路由跳转(三)之JKRouter基础教程1
接上篇《iOS路由跳转(二)之需求分析》 这一篇文章主要对JKRouter的实现一 一说明。 JKRouter的结构如下: JKRouter里面都有啥兵马未动,粮草先行。先给大家简单介绍下各个类的作用。JKRouter 这个类主要是定义实现了各种跳转的方法,以及一些相关配件类的声明。RouterOptions@interface RouterOptions :...原创 2017-03-21 08:14:57 · 3377 阅读 · 0 评论 -
iOS路由跳转(二)之需求分析
emsp;接上篇《 iOS路由跳转(一)之初识URL》 我们了解了URL的组成,以及我们想通过URL的各个部分来实现路由跳转的功能,接下来我们就分析下我们要达到的目标。 能够在推送时跳转到任意页面 我们都知道有时候我们为了发布某些通知给到用户,用户点开通知,当让最希望看到的就是通知所说的页面,但是通知携带信息有限,所以为相关的module起一个名字moduleID就能满足H5,i...原创 2017-03-14 07:54:10 · 2886 阅读 · 0 评论 -
iOS路由跳转(一)之初识URL
最近在在写一个实现URL跳转的库,为了方便交流学习,特意分享给大家,这篇文章先给大家分享一下URL的基础知识。 由于URL使用范围非常的广泛,而且无论,iOS,Android,H5都有相关的解析方法,不用重新写相关的解析方法,可以减少大家的工作量,具有普遍适用性。URL组成: protocol :// hostname[:port] / path / [;parameters]...原创 2017-03-10 19:42:31 · 4154 阅读 · 0 评论 -
iOS组件化开发过程中的沙盒路径解决策略
在组件化开发的过程中,在业务组件中,常常会加载各种资源文件,例如png图片,mp3音频。js文件,txt文件等等。我们此时用之前常用的方法[NSBundle mainBundle] pathForResource:@"123.png" type:nil] 时发现获取不到路径了。具体原因我们下面进行详细的分解说明。 什么是NSBundle? bundle 是一个目录,其中包含了程序...原创 2018-03-10 17:01:18 · 1264 阅读 · 0 评论