分析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____
(转载请说明出处----来自六阅雪)
紧接上篇文章,配置好环境后,接下来就是编译源代码运行。当初直接点击“运行”,但那是引用了它已经生成好的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____
(转载请说明出处----来自六阅雪)
相关文章推荐
- Yii框架源码分析之文件结构、程序结构及配置
- Yii框架源码分析之文件结构、程序结构及配置
- Yii框架源码分析之文件结构、程序结构及配置
- 从monodis源码分析pe文件结构与msil反汇编
- torcs源码分析--(2)关键文件及结构
- 集合框架源码分析六之堆结构的实现(PriorityQueue)
- Heritrix源码分析(六) Heritrix的文件结构分析(转)
- CI框架源码完全分析之核心文件(装载器)Loader.php
- CI框架源码完全分析之核心文件(UTF8类)Utf8.php
- codeIgniter框架基本结构分析
- Erlang千万级用户游戏框架(Openpoker)源码文件分析清单
- Erlang千万级用户游戏框架(Openpoker)源码文件分析清单
- MySQL源码分析——代码结构与基本流程
- CI框架源码完全分析之核心文件(输入类)Input.php
- Libevent源码分析-----evbuffer结构与基本操作
- CI框架源码完全分析之核心文件(超级控制器)Controller.php
- CI框架源码完全分析之核心文件(安全类)Security.php
- CI框架源码完全分析之核心文件(装载器)Loader.php
- 源码分析RocketMQ之消费队列、Index索引文件存储结构与存储机制-上篇
- 集合框架源码分析六之堆结构的实现(PriorityQueue)