我阅读SDK源码的思路

作为开发工程师,我相信每个同学都经历阅读别人源码。阅读源码这件事情,我经历了不少次。今天就来谈谈一些我阅读源码的心得。

第一步:配合开发文档找入口,我们阅读源码的时候。会经常碰到下面这种情况


源码之所以叫源码,是因为它不是几个文件,几行代码组成的。源码都是一个很庞大很复杂的东西。几百个文件,几万行代码。这样让我们第一次拿到源码后。就想茫茫大海中,没有导航的船。不知往哪走,不知从何下手。所以,我们拿到源码后,不要着急看,要先找入口,根据功能找入口!例如,我要看一个SDK的源码,我会去拿到SDK的接入文档。看看文档里面,第一个调用SDK的方法。当你带有目的去看源码,你就知道从那里入手了。如果像我是要学习别人SDK的架构和写法。我就会带着这个目的去看,他们第一个调用SDK的入口,到底做了什么操作。顺着一条线去找源码,这样才会让你有明确的方向感。

第二步:找逻辑关联,当我们找到SDK的入口方法后,接下来我们就要去找关联。例如:


这是SDK的方法入口,也就初始化SDK的方法。就是短短的几行代码,我们就可以找到SDK初始化时,做了哪些操作。看第一行代码,可以看到传进入了一个 fangameStartListener 接口对象。可以想象既然传进入了,肯定有地方去调用了这个接口。先看看接口有什么回调。以及FGControler设置监听方法做了什么。可以看到接口就两个回调方法。疑问就是什么时候去调用这两个方法呢??

再往下看就可以看到,FGControler里面的设置接口对象的方法,并且赋值给了全局的对象。然后这个全局对象又在哪里调用。接着往下找


这里就找到了调用这个fanGameStartListener的全局对象,但是这是在handlerResult里面调用的。那就是说明肯定有地方调用了这个FGControler的handlerResult方法。


到这里在入口方法第一行里面,得到的信息就这么多了。第二行第三行没有太多信息,很表面。我们重点关注跳转界面的方法。我们找到FgCheckVersionActivity这个界面。


几个红色框框里面的代码是比较重要的,第一个就是这个activity继承了一个公共BaseActivity,然后在oncreate方法里面去后去了那个接口对象,还有一个就是动态申请权限的方法。还记得上面我们的疑问,就是在SDK入口方法里面传入的监听对象在什么东西调用了。看来是在这个页面调用了。往下看


找到了监听对象在调用回调方法,毫无疑问,我们接下来就是找调用,handlerSuccess()与handlerError()的地方。目的就是屡清楚,回调onSuccess或者onExit的根据。



很清楚啦,Activity里面有两个方法,调用了handlerError()方法。第一个在loadPlugin()方法,这个方法在init(),而这个方法也重写了父类的方法。


然后onDownloadError(),这是一个回调方法。



所以到这里。我们基本把SDK的入口初始化方法的业务逻辑弄清楚了。

1.先设置一个监听对象

2.设置全局变量

3.获取需要显示的语言

4.跳转页面,然后拿到第一步设置的监听。

5.动态申请权限,在init(),初始化资源,View,加载插件。插件就是一个apk

6.根据上面初始化结果返回,onExit或者onSuccess。

上面就是我阅读SDK源码的思路,和步骤。决定记录下来,为自己以后开发SDK提供一些帮助。我是一名Android工程师,我为自己加油。

猜你喜欢

转载自blog.csdn.net/ruan_number3/article/details/79571075