EaseUI集成中的坑

一、使用Pods集成

  1. 由于EaseUI使用了宏NSEaseLocalizedString, 在Podfile文件中不能使用use_frameworks!, 应该是因为NSBundle不能访问framework.

如果你通过Pods在OC工程中集成了Swfit写的三方库, 那么恭喜你, 你只能手动集成EaseUI或者手动集成Swift的库. 当让, 手动集成EaseUI还有其他问题. 下面会提到.

  1. 如果你之前工程一直在使用use_frameworks!, 为了集成EaseUI而去掉, 那么会报错ld:framework not found xxxxxx. 这是因为Ohter Linker Flags 中残留的设置, 删掉就可以了.

AFNetworking为例, 报错ld:framework not found AFNetworking, 那么需要删掉Other Linker Flags中的-framework"AFNetworking". 如图所示:

337235-235421d0b24bf26c.png
删除-framework及"AFNetworking"

顺便提一句, 如果一直没有使用 use_framework!, 突然使用可能会报错 ld: library not found for -lAFNnetrowking, 参考: https://www.jianshu.com/p/d0dc92d9a31b

  1. 去掉use_framework!还有一个问题, 在我的工程中, 去掉之后LBXScan报错找不到LBXScanViewControllerstyle属性. 该属性声明如下:
#ifdef LBXScan_Define_UI
@property (nonatomic, strong) LBXScanViewStyle *style;
#endif

这是为了能够分模块下载. 除了使用use_framework!之外, 还可以通过在pch文件中声明宏LBXScan_Define_UI的方式解决. 解决办法: https://github.com/MxABC/LBXScan/issues/111

  1. EaseUI直接或间接依赖了老版本的MBProgressHUDMJRefreshSDWebImage等三方库. 如果你同时使用Pods集成了直接或间接依赖以上三方的新版本, 会造成冲突, 只能二选一(黑科技除外).

二、手动集成

手动集成我遇到的唯一问题是使用@import的时候会报错:

Use of '@import' when C++ modules are disabled, consider using -fmodules and -fcxx-modul.

这是由于EaseUI中有.mm文件, 而@import是不能在C++模块使用. 然而LBXScan中就使用了@import, 由于这部分是同事集成并使用的, 所以遇到这个问题我就直接选择通过Pods集成的办法. 也许手动集成LBXScan也可以解决问题. 因为手动集成的话, 我们就可以放心修改三方的源码了.

以上, 一知半解. 希望更了解的同学指教.

猜你喜欢

转载自blog.csdn.net/weixin_34101784/article/details/86968094
今日推荐