iOS项目组件化之Cocoapods(二) -- 踩坑与小技巧

前言

该篇介绍在组件化中遇到的一些坑和一些小技巧使用方面.

系列文章

iOS项目组件化之Cocoapods(一) – 基础
iOS项目组件化之Cocoapods(二) – 踩坑与小技巧


静态库多类型资源文件问题

静态库主要坑之一就是多类型资源文件问题. 当时就为了这个查了很久 (╯‵□′)╯︵┻━┻
当你设podspec为:

s.static_framework = true

这时候就会存在只能加载一种类型文件问题, 下面我用实例来演示给大家看.

库结构

我们先看看库文件
在这里插入图片描述

代码运行

两个库, 一个是动态库, 一个是静态库. 资源文件都是放了一个xib和一张图片.(Swift和OC没啥差别)
接下来看看主项目里面代码的调用, 并且运行一下.
在这里插入图片描述从日志中, 我们可以看到, 动态库和静态库

勾选Inherit Module From Target

这里要注意一点, xib中必须要勾选Inherit Module From Target 指定在哪个模组
不然你运行会和静态库一样, 出现 Unknown class xxx in Interface Builder file.
在这里插入图片描述

解决静态库使用多类型资源文件问题

其实这个很好解决, 只要把静态库需要用的资源分离出来,创建一个资源库, 然后静态库的podspec里面关联这个资源库. 这样就能静态库使用多类型资源问题了.
最后这个我就不演示了, 留给大家自己去实践, 有啥问题可以留个评论~


App Extension 被限制问题

‘sharedApplication’ is unavailable: not available on iOS (App Extension) - Use view controller based solutions where appropriate instead.
这个错误是因为你用AppExtension的’sharedApplication’就已经是在调用系统层的东西了, 所以苹果是不会让你取这个的.
所以App Extension里面用的库一定要注意, 不要涉及到这些系统禁用的东西.


The ‘Pods-xxx’ target has transitive dependencies that include static binaries:

出现这个错误时, 在podspec中加入. 具体原因我也没去了解, 知道的大哥可以在评论中解释一下.

Pod::Spec.new do |s|
  pre_install do |installer|Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {
      
  }
  end
end

小技巧

项目配置

在这里我列出最常用的两个吧( 反正是我最常用✧(≖ ◡ ≖) )
这个属性还可以配置很多, 具体可以去官网查, 或者Google一下.
ps: ENABLE_BITCODE 这些字段, 可以右击 xxx.xcodeproj, 点击显示包内容, 打开project.pbxproj文件查看字段( 这个文件很有用,有兴趣可以深入了解一下 )

s.pod_target_xcconfig = {
	'ENABLE_BITCODE' => 'NO', #配置Bitcode为NO
	'ENABLE_TESTABILITY' => 'NO', #配置enable testability为NO
}

分模块

其实按目前的教程, 如果直接这样发布到Cocoapods上面, 或者指定git依赖等等.
会发现文件的位置并不会分文件夹, 而是全部在一个目录下, 这样就会特别不清晰, 这个时候就需要用到 .subspec 字段了.

Pod::Spec.new do |s|

# s 是上面 do |s| 声明的 s, 类似声明一个对象
	s.subspec 'Tool' do |tool|
	# Tool是文件夹名, tool是这个组的对象.
	
		tool.subspec 'UITool' do |uiTool|
		# 如果还需要细分, 那么就一直这样下去就行
		end
		
	end
	
end

而且人家单独想用你某个subspec还可以这样pod

pod 'xxx/Tool'

这样分不单单层次分明而已, 例如一些老项目是有MRC文件, 然后你只需要把MRC文件放到一个文件夹,其他ARC放到另一个文件夹,这样就能通过每个不同的subspec来设置.
还有很多用法,这里只是抛转引玉.


项目地址

照惯例, 提供项目地址
https://github.com/SyKingW/XQTestCocoapodsModule(2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值