最近公司项目组要求升级facebook的sdk版本,本以为下载引入就可以了,可是事实上却不是这样的。
入坑原因:
1、公司打包系统只支持ant打包方式
2、最新版的facebook只提供maven引入和aar包引入方式
问同事说上一个版本怎么集成的,得到的答案是几年前的包,那时候sdk有支持eclipse的依赖工程。
好吧,开始搞吧。
1、找到官网文档,认真阅读
2、创建一个AndroidStudio工程,maven引入以下资源
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.0.2' implementation 'com.android.support:cardview-v7:27.0.2' compile 'com.facebook.android:facebook-common:4.33.0' compile 'com.facebook.android:facebook-share:4.33.0' }
注:由于我们没有用到facebook的登录按钮等资源,所以没有引用facebook-login:4.33.0
资源
3、sdk下载完成后,将显示模式改为Project模式,找到facebook相关资源包,你会发现会自动下载关联的包facebook-core:4.33.0
,请看图:
4、你以为结束了,其实苦逼之路刚开始,先找个空白的地方创建个文件夹,姑且叫做“facebooksdk”吧,挨个点开三个目录,找到class对应的文件夹,拷贝到“facebooksdk”下
5、稍微留意下你会发现,common包和share包是带资源文件的,这时候需要分别往里创建一个.project文件、一个libs文件,并将jar包拷贝到libs下,这样就变成了一个eclipse依赖工程了,请看图
7、现在可以打开我们的正经的eclipse工程了,导入两个依赖工程”facebook-common”和”facebook-share”,主工程下导入facebook-core.jar
8、激动的运行了一下,尼玛提示cardview不存在,cardview属于v7包系列的独立包,那就回到AndroidStudio工程下找v7包和cardview包吧,请看图:
9、这两个包都包含资源文件,同样的方法,转变成两个eclipse依赖工程,添加到正经的那个工程下。点击运行,尼玛,v4、v7版本不一致,一看项目引用了v4包,要了亲命了,如果你了解v4包结构,你就知道有多坑了
10、回到AndroidStudio工程下,找到v4的包,请看图:
11、v4支持包包括7个aar包,其中support-compat、support-media-compat
包含资源文件,需要将资源转成eclipse工程,同样的方式引入,clean,不报错了,嘻嘻
12、运行,whats the fuck, 又报错了,报错原因如下: Caused by: java.lang.ClassNotFoundException: Didn't find class "bolts.AppLinks" on path: ...
,找不到bolts下的AppLinks
13、我怀疑fackbook还关联下载了其他的东东,继续回到AndroidStudio下,寻找带bolt的包,果然找到了,而且还有三个,请看图:
14、这三个包都没有资源文件,不管三七二十八,直接把这3个jar包拷贝到主目录下,默默祈祷了2s钟,点击运行
15、阿西吧,终于好了,请看图:
16、最后总觉得bolt-android、bolt-tasks
没用却把他们引入了浑身难受,于是删除了这两个,果然一切正常
花了大半天,终于把这个任务搞定了
心得体会:现在很多第三方的sdk已不再支持eclipse项目,当你还在用eclipse集成sdk的时候,你要处理关联的aar包转换问题、64k超限问题、包重复引用问题、包引用层级增加问题、各种编译报错、n个依赖工程、n个jar包,所以请敬爱生命,远离eclipse!