项目地址:https://github.com/xiaoL0204/XLSpeechRecognitionDemo
CocoaPods地址:https://cocoapods.org/?q=XLSpeechRecognition
XLSpeechRecognition使用方法:pod 'XLSpeechRecognition', '~> 1.0.1'
关于发布CocoaPods库的方法和步骤可以参考这篇文章:发布CocoaPods组件碰到的坑与心得体会
写XLSpeechRecognition组件的时候,Demo工程能够顺利跑起来,达到了预期效果。但是在发布到CocoaPods时,碰到了好几个问题。现整理如下:
1.POP依赖库错误
The following build commands failed:CompileC /Users/xiaolin/Library/Developer/Xcode/DerivedData/App-egqnmoqsjdnegcgmcoojyjxcjkbz/Build/Intermediates/Pods.build/Release-iphonesimulator/pop.build/Objects-normal/i386/POPLayerExtras.o pop/pop/POPLayerExtras.mm normal i386 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler(1 failure) -> XLSpeechRecognition (1.0.0) - ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. - NOTE | [iOS] xcodebuild: pop/pop/POPLayerExtras.mm:12:10: fatal error: 'TransformationMatrix.h' file not found[!] XLSpeechRecognition did not pass validation, due to 1 error. You can use the '--no-clean' option to inspect any issue.
根据终端错误提示,TransformationMatrix.h
文件找不到。但是无论是重新build
或run
或者clean
原Xcode
工程都是没问题的,猜测pod lib lint
命令验证与Xcode
编译方式不同。
既然报这样的错误,那就只能在工程中修改配置,让它验证通过。
原工程是workspace
,POP
依赖库是通过cocopods
加入到workspace
中的;无论修改Pods.xcodeproj
中的配置,包括Pods
工程的Build Phases -> Headers
或Compile Sources
都是报一样的错误,也修改了Build Settings
中的Deployment Target
、Compile Sources
(修改为According to File Type
)、Header Search Paths
、Always Search User Paths
、prefix header
、swift version
,都是workspace
能正常编译运行,CocoaPods
却验证不通过。
</br>
最后手动将POP
库以文件夹的形式加入到工程中,修改Header Paths
,将TransformationMatrix.cpp
名称改为TransformationMatrix.mm
,就没报这个错误了。
工程目录如下:
2.源文件、资源文件找不到
xlmini:XLSpeechRecognitionDemo xiaoL$ pod lib lint -> XLSpeechRecognition (1.0.0) - ERROR | [iOS] file patterns: The 'source_files' pattern did not match any file. - ERROR | [iOS] file patterns: The 'resources' pattern did not match any file.[!] XLSpeechRecognition did not pass validation, due to 2 errors.You can use the '--no-clean' option to inspect any issue.
原因:是XLSpeechRecognition.podspec
文件的问题,将s.resources
和s.source_files
修改如下就可以了:
s.resources = "XLSpeechRecognitionDemo/XLSpeechRecognitionDemo/XLSpeechRecognition/*.png" s.source_files = 'XLSpeechRecognitionDemo/XLSpeechRecognitionDemo/*.{h,m,mm,cpp}'
之所以这样配置,是因为我采用的工程的XLSpeechRecognition
目录如下:
podspec
的配置需要随实际工程文件路径的改变而修改。