SDK开发中解决sdk和app项目中都使用某个第三发库引发的冲突
2018-07-03 本文已影响82人
伦伦子_f7b3
前言:
在第一篇介绍常见错误中提到一个如果你的SDK中使用了afn这个网络请求库,然后你接入SDK的app中也要使用afn进行网络请求,那么就会报错,提示都同时使用了afn相关文件,那么如何解决呢?
方法一:(仅作了解)
将SDK里面使用的afn的文件都加上一个前缀,相当于SDK里面的afn实行了afn的所以功能但是跟APP里面的afn已经不是同一个资源包了,这样就不会冲突了。这种方式对与文件很少的第三发库可以使用,但是弊端还是很多,如果第三发库更新了又要重新改,所以这种方法仅做了解,不推荐使用。
方法二:(推荐方法)
1. 将afn拖到SDK里面的时候按如下方式勾选,这样的方式SDK工程仅仅是对afn进行了引用,而不是将afn的资源包copy到SDK工程里面,所以SDK工程里面就并不会真正的存在afn的资源包(可通过Show in Finder查看),但是SDK工程又可以使用afn里面的所有文件。
2.然后在使用SDK的时候,APP工程中就必须还要将afn的资源包拖入到APP工程中,这样才能正常使用SDK。
扩展:有时候我们为了让SDK包小一点,可以将SDK工程中要使用的第三方的SDK资源包不直接加入到SDK工程中,通过方法二这种方式放到APP工程中。