2019-07-31 记录私有库坑 :Include of non-modular header inside framework module

如何给自己项目添加Pod支持,让别人也可以 pod install,愉快的使用你的库,请看这里
:https://www.jianshu.com/p/0e1d796b2a42

在给自己项目添加Pod支持,在终端执行:

pod spec lint MSCycleScrollView.podspec

抛出如下错误:

图1

错误原因:我在项目中添加了第三方依赖库SDWebImage和MSPageControl,而在引入时,在项目开放源码部分的.h文件中引入了第三方.h文件。如下图:

图2

遇到这个问题之后在网上搜索了下“include of non-modular header inside framework module”,网上大部分的解决方法有两种:
第一种:将Build Settings中的Allow Non-modular Includes In Framework Modules设为YES;
第二种:将第三方.h文件在.m中引入;

尝试第一种方法:尝试了方法1后,依旧抛出图1的错误;
尝试第二种方法:因为我的项目.h文件需要引入第三方的类名对象,因此在项目.m中引入第三方.h这个方法肯定是行不通,好桑心~~~。但是不能放弃啊!!,后来我在网上找啊找,找到两种解决方案,尝试都成功了:

解决方法一、在你的.podspec文件中添加

spec.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }

⚠️⚠️⚠️注意注意:如果多个pod的.podspec文件中对user_target_xcconfig同一个值进行了设置,那么就可能存在冲突问题,所以不建议使用!

解决方法二、在执行pod spec lint和pod trunk push时,在命令行尾部添加--use-libraries,如下命令

pod trunk push MSCycleScrollView.podspec --verbose --allow-warnings --use-libraries

建议使用第二种方法

贴别提示:如果之前在pod spec lint时使用了--allow-warnings或--use-libraries,这里在pod trunk push就必须添加,这里坑了我好半天!!

在此记录一下,希望小伙伴们不要踩坑!!

你可能感兴趣的:(2019-07-31 记录私有库坑 :Include of non-modular header inside framework module)