引言
由于项目中的一些第三方类库版本较旧,导致在App扫描上架时遇到一些问题。比如说:当前项目中的AFNetworking这个类库的版本号为2.5.4。该版本在网络请求时使用的是NSURLConnection,但是苹果从IOS9以后就废弃了NSURLConnection,这导致在扫描App时出现了低危风险。而实际上,在AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持,转而用NSURLSession来替代。也就是说在不影响业务需求以及不同操作系统的适配的前提下,更新第三方类库是非常有必要的。
尝试了两种引入第三方类库的方式:(1)使用CocoaPods来引入项目所需的第三方的类库; (2)根据下载好的第三方类库包手动在项目中添加进来 。现将引入第三方类库过程中的步骤以及遇到问题时的解决方案记录下来,方便自己日后阅读,也希望可以能给遇到同样问题的人一些帮助。
一:使用CocoaPods来引入项目所需的第三方的类库
1.使用和安装
关于如何CocoaPods的安装和使用可阅读http://www.jianshu.com/p/b74c8ebd714d。 文章写得非常详细,基本看完就可以导入第三方类库成功。在安装CocoaPods之前,首先要在本地安装好Ruby环境,如果电脑上没有ruby环境,可以参考这篇文章http://www.cnblogs.com/daguo/p/4097263.html。
2.可能遇到的问题
如果是第一次导入第三方类库很容易成功,但是如果是更新项目中的某些第三方类库,可能会遇到一些问题。比如说:随着第三方类库的更新导致了项目中已有代码的报错,此时我们需要详细了解新版本的类库中更新了的类和方法的使用,修改代码直到bulid成功。但是bulid成功,在程序运行时可能会发生crash,在更新AFNetworing为3.0版本后,我的项目就一直处于这种状态,报错信息为:unrecognized selector sent to instance ~~~,但如果我新建一个项目并引入AFNetworing的版本为3.0却不会出现这个错误。问题的在我们的项目第一次打开时就会创建一个bulid文件夹,里面包含我们项目编译好的文件,也就是说bulid文件夹里依旧存在NSURLConnection,但事实上代码中已经不存在NSURLConnection的实例,所以才会报这个错。
3.解决办法
移除项目中的bulid文件夹,bulid文件夹的目录可以再Xcode -> Preferences -> Location -> Locations -> Derived Data下查找,移除完成后重新pod install,如果依旧报错再执行pod update.
二:将下载好的第三方类库包手动添加到项目中
1.在Finder中将下载好的第三方类库文件夹放在项目文件夹中合适的地方(具体要依据个人或公司的项目文件夹安排不同自行调整),如导入FacebookSDKs-iOS-4.22.0类库。
2. 在xcode中新建一个Group,要与Finder中新建的文件夹的位置一致。右击新建的Group,选择Add Files to "项目文件夹名字”,将要添加的类库添加进来。
3. 引入后或在项目target -> General ->Linked Frameworks and Libraries下添加进我们所需的第三方类库,若没有可以手动添加。添加完成可以发现在BulidSettings ->Framework Search Paths自动生成引用路径。
再次bulid,成功!