私有库的创建我就不多记录了,网上太多了。
这是我们其中一个首页组件,内部建了实体文件夹。
image.png
本地验证
pod lib lint IQHHome.podspec --verbose --use-libraries --allow-warnings
--verbose:打印验证过程的信息
--use-libraries:解决引用第三方造成警告以及报错(详细的不说了,网上一搜一大堆)
--allow-warnings:忽略所有警告
问题1: - ERROR | [iOS] unknown: Encountered an unknown error (Unable to find a specification for IQHFoundation
depended upon by IQHHome
原因:IQHFoundation
是我们自己的私有库,引用时需要在pod lib lint 后面加source源,具体命令写法如下(不要忽略CocoaPods的库源)
pod lib lint IQHHome.podspec --use-libraries --allow-warnings --sources=私有库源,CocoaPods的库源
问题2: - ERROR | [iOS] [IQHHome/RouterAPI] xcodebuild: Returned an unsuccessful exit code. You can use --verbose
for more information.
还会报什么找不到文件:- NOTE | [IQHHome/RouterAPI] xcodebuild: /Users/lidong/Desktop/xxx/xxx/IQHHome/IQHHome/RouterAPI/IQHHomeRouterAPI.m:11:9: fatal error: 'IQHHomeController.h' file not found
我感觉的原因:是因为建立实体文件夹,文件都不在同级目录,导致内部找不到文件,这个问题困扰了我好天,开始主要是因为私有库引用私有库都会报这个找不到文件的问题。最后我是去研究AFNetworking的podspec,才找到问题(此处感谢欧阳大佬的文章)。
解决办法:
-
当前私有库中引用当前私有库的其他实体文件中的文件
image.png
s.subspec 'RouterAPI' do |api|
api.source_files = 'IQHHome/RouterAPI'
api.dependency 'IQHHome/Controller'
end
- 当前私有库引用其他私有库,就简单了
s.dependency 'IQHFoundation'
但是你也可以按AFNetworking的方法,根据文件名字来建立虚拟文件夹,这样是就不存在这种问题的。
网友评论