CocoaPods集成中一些问题的解决

问题1:include of non-modular header inside framework module

原因:
工程中的参数配置问题,需要修改podspec文件中的配置。
解决办法:
在podspec文件中加上:s.user_target_xcconfig = { ‘CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES’ => ‘YES’ }

问题2:集成pods后报关于bitcode的错误

原因:
当pod工程中引入了.a静态库,.a静态库编写的时候bitcode是否开启和项目工程的bitcode开关不一致时,就会出现bitcode的报错。
解决办法:
我的工程中bitcode是关闭的,那么需要在podspec文件中加上:s.user_target_xcconfig = { ‘ENABLE_BITCODE’ => ‘NO’ }
这样就设置了该pod默认不使用bitcode,解决了报错。

问题3:在制作pod的过程中既要依赖一个私有库,又要依赖一个共有库,发现公有库报了找不到的错误

分析:
当我单独去依赖一个私有库:s.dependency ‘BIEncrypt’,’~> 0.2.4’
然后使用命令:pod lib lint --sources=BIEncrypt。去编译时,可以正常编译。
然后单独去依赖一个共有库:s.dependency ‘LKDBHelper’,’~> 2.5.1’
使用命令:pod lib lint。也是可以正常编译通过的。
可是一旦两种库同时依赖,就找不到公有库了。
原因:
使用–sources命令后,用到的库的地址都默认从这个命令中去找了,自然会就找不到公有库。
解决办法:
在–sources后以地址的形式依赖,包括公有库和私有库。每一个库都用地址的形式去依赖,尤其需要注意的是公有库的地址,应该用:https://github.com/CocoaPods/Specs.git,这样所有依赖库就都可以找到了。

–skip-import-validation --skip-tests --quick命令

–quick命令是个坑,虽然使用它可以迅速通过验证,但是在pod repo push的时候并不存在这个命令,不能直接跳过,这样podspec自然会也推不上去。
–skip-import-validation --skip-tests命令组合可以常用,只要在demo中确定工程没有问题,如果想避免在编译期间的各种麻烦,可以加上这两个命令来解决。这个命令组合在push的时候也是可以使用的。

几个命令回顾

s.libraries = “c++”。添加pod依赖的lib文件。
s.ios.vendored_framework = “verify_engine/opencv2.framework”。添加pod依赖的第三方framework。
s.dependency ‘LKDBHelper’,’~> 2.5.1’。添加pod依赖。
s.resources = “facesdk/authorization/.bundle"。添加资源文件。
s.ios.vendored_libraries = "facesdk/lib/
.a”。依赖静态库。
ss.dependency ‘BIFaceSDK/include’。依赖某个文件层级。

你可能感兴趣的:(iOS开发)