您的位置:首页 > 移动开发

分析FBReader源码(二)---文件结构及基本框架梳理

2012-10-10 22:53 573 查看
一、编译源代码       
       紧接上篇文章,配置好环境后,接下来就是编译源代码运行。当初直接点击“运行”,但那是引用了它已经生成好的SO库的情况下,今后将开始简单修改代码(c/c++),所以会重新编译。过程如下:
       1.找到FBReader所在的路径(类似):         
          C:\Users\Luzaimou\Desktop\FBreader2.0\FBReaderJ   
       2.打开cygwin,跑到对应的目录: 
        


      3.直接输入“$NDK/ndk-build"即可,编译可能需要点时间。
      4.不错问题的话,应该能够生成so文件了,刷新一下项目的libs目录。
          


        5.运行。
二、FBReader文件结构
        FBReader开源项目在国内还是挺流行的,但是目前貌似很少有这方面的资料,可能是高手都没时间,不愿意写。我很浅薄,冒天下之大不韪,希望各位高手不要笑话。写文章的初衷本就是秉承开源、共享、免费、自由的精神,所以也是跟随FBReader的本意,没有其他目的。文章的好坏,也是任人评说,仁者见仁,智者见智,只当抛砖引玉。望更多的童鞋加入其中,把开源的精神发扬广大!
       我尽我所能写文章,如有纰漏,大家指点海涵(我也是刚刚研究2.0)。
       FBReader的源码文件结构大致如下:
       FBReader
             |_________src         (JAVA源代码)
             |_________assets    (这里有默认的那本书,还有背景图片等)
             |_________docs       (里面有一PDF,介绍如何安装Cygwin)
             |_________icons       (一些图标,比如Menu,文字搜索的小图标)
             |_________jni           (C/C++实现的库文件,内容比较多)
             |_________libs        (生成的SO文件放这里)
             |_________obj         (.a文件放这里)
             |_________obsolete(用处不明)
             |_________res          (布局和string等xml放这里)
             |_________scripts    (用处不明)
             |_________AndroidManifest.xml

       项目大概结构如此,下面介绍具体的Java部分的包。
       具体内容如下:
     


  
    下面就是C/C++部分简单的解析,jni文件夹下:
    


        文件夹主要的结构就是如此,其他的比如Assets、Icons、Obsolete文件夹下,就由大家自己去了解。到这里,文件夹就基本搞定。

四、重要文件分析    
         
       首先,编译C/C++的时候,需要编写NDK能够识别的Android.mk文件。它规定了整个编译的流程,还有需要调用的包,非常重要。
      下面看几个比较重要的两 部分:

       1.
       


       
       上面的代码,注意最后的LOCAL_LDLIBS就可以了。因为是解压缩功能,所以会调用ZLIB包,于是就加入"-lz"。

       2.
        


        用”include $(CLEAR_VARS)"做分割,前面有个编译出来expat,其实是一个解析XML的包;后面的NativeFormats的编译需要用到expat包,所以会先让expat编译,然后用LOCAL_STATIC_LIBRARIES:=expat来调用!

      其次,AndroidManifest.xml文件也是很重要的。

      1.Application
      


       从这里知道FBReader的Application是ZLAndroidApplication。
       项目代码多,有时很多名字很相似,会误导我们,记住ZLAndroidApplication!
   
      2.MainActivity(就是主Activity)
          


        这个是以后跟踪程序的出发点,信息有用,FBReader,嘿嘿!

     3.就是permission
      


      上面有INTERNET权限,是网络连接,还有WITE_EXTERNAL_STORAGE,这个就是写SDcard的权限了,猜猜会拿来干啥?

五、简单框架

          做个简单的比喻,也许不太恰当,但是可能对一部分人有更好的理解。
          FBReader是一个复杂的项目(对我刚入此行来说),代码量相当庞大。如何把它分解出几个局部,再来分析,肯定会对代码有一个比较好的方法。
       


         嗯。上面的的文字描述,可能没有尽析FBReader框架的精妙,但是早前已说我功底尚浅,各位童鞋就谅解下。
         此片文章就分析到这里!
          
         对FBReader感兴趣的童鞋请加入:
                                                    QQ群:218971429,233932132
         或者访问我们“六阅雪”网站:
                                                           http://sixreader.com
        

         __END____

       (转载请说明出处----来自六阅雪)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息