開源電子書項目FBReader初探(一)

FBReader簡介和包功能淺析

簡介

項目官網:fbreader.org/androidhtml

FBReader是一個開源電子書閱讀器,現在已經支持不少設備。不只有PC版,支持的操做系統有GNU/Linux,MicrosoftWindows,也支持移動終端設備,好比NokiaInternetTablets。早在2008年4月13日,就已經有Android版本,即你們熟知的FBReaderJ。android

具備如下特性:c++

  • 支持電子書格式:ePub、kindle (mobipocket)、fb二、rtf、html、microsoft doc、純文本、PDF(須要PDF插件)、DJVU(須要DjVU插件)、CBR和CBZ漫畫(須要comic插件)
  • 可拓展性:提供綱領性的API,能夠經過第三方插件得到一些額外的特性。例如比較受歡迎的插件Text-to-Speech
  • 支持直接閱讀zip文件
  • 提供直接訪問許多網絡電子書圖書館和商店
  • 支持自定義OPDS目錄的添加
  • 與一些流行的字典如ColorDict, SlovoEd, Fora等整合
  • 可使用外部TrueType/OpenType字體
  • 29種語言的本地化
  • 包含16種語言的斷字模式
  • 按標題、做者、系列等組織用戶圖書庫
  • 書收集、閱讀位置、書籤等可同步在基於Google Drive™的FBReader雲服務

1、導入項目並運行

項目地址

github.com/geometer/FB…git

導入

改項目是eclipse編寫的,因此第一步,把這個項目變成AS項目並導入AS 建立aidl目錄,將FBReader項目中使用的aidl文件放於此 在此必定切記不要修改項目包名,不然將是一場災難!!!github

運行

編譯項目so文件 若是將FB做爲依賴的話,還須要修改FBReaderIntents中包名常量DEFAULT_PACKAGE爲本身應用的包名數據庫

2、項目源碼結構

源碼大致結構

FBReader的源碼文件結構大體以下:vim

文件夾 說明
src JAVA源代碼
asset 這裏有默認的那本書,還有背景圖片等
docs 裏面有一PDF,介紹如何安裝Cygwin
icons 一些圖標,好比menu,文字搜索的小圖標
jni c/c++實現的庫文件,內容比較多
libs 生成的so文件在這裏
ojb .a文件
obsolete 廢棄
res 資源
scripts 用處不明
third-party 三方引用
AndroidManiffest.xml 清單文件

針對於源代碼各包功能淺析

包名 說明
com/paragon/dictionary/fbreader 字典查詢
org.amse.ys.zip 這個包是解壓用,epub自己就是一個壓縮文件,因此要解壓縮
org.fbreader.util 比較排序
org.geometerplus 核心代碼包
org.vimgadgets.linebreak 斷出一個字,例如「你好,再見!」,斷字結果爲「你」「好」「再」「見」

核心代碼包功能之org.geometerplus.android

包名 說明
org.geometerplus.android.fbreader.api 這個包是FBReader經過AIDL實現的API接口,用於安裝插件等
org.geometerplus.android.fbreader.bookmark FB自帶書籤頁和編輯頁及編輯工具類
org.geometerplus.android.fbreader.config 各類FB相關配置,並定義了對應service和SQLite
org.geometerplus.android.fbreader.convers 圖書封面相關緩存
org.geometerplus.android.fbreader.crash 圖書目錄相關的修復
org.geometerplus.android.fbreader.dict 詞典相關工具,包含打開詞典Activity的定義
org.geometerplus.android.fbreader.error 圖書閱讀中出錯時打開的Activity
org.geometerplus.android.fbreader.formatPlugin 根據特定插件,生成相關Intent,可用於安裝插件
org.geometerplus.android.fbreader.httpd 定義了dataservice和DataServer(提供獲取封面和video服務)
org.geometerplus.android.fbreader.image 只有一個ImageViewActivity,長按顯示圖片
org.geometerplus.android.fbreader.library 主要是初始化數據庫books.db,還有圖書信息的activity
org.geometerplus.android.fbreader.libraryService 定義了libraryservice服務,進行書籍相關管理以及根據文件路徑或特定id等獲取、查詢到真實的book
org.geometerplus.android.fbreader.network 這裏是FBReader網絡鏈接相關的,好比下載書籍,書倉受權,OPDS相關
org.geometerplus.android.fbreader.preferences 配置信息相關的,好比背景,文字大小,翻頁動畫速度,以及顏色等
org.geometerplus.android.fbreader.sync 書籤等的同步相關,定義了SyncService
org.geometerplus.android.fbreader.sync TipsActivity
org.geometerplus.android.fbreader.tree TreeActivity和TreeAdapter,定義樹形結構Activity、Adapter的基類
org.geometerplus.android.fbreader.util 圖片同步和簡單dialog的activity
org.geometerplus.android.util 包工具類,數據庫,還有更新UI、文件工具等

該包中的FBReader即爲程序的主Actitiy,也是閱讀的activity。其餘類,諸如已Action爲結尾的是各類FBReader操做對應的執行類,其核心在於run方法內部定義的操做行爲。還有一些相似popup、notifier等也都是具體的一些操做對應。api

核心代碼包功能之org.geometerplus.fbreader

包名 說明
org.geometerplus.fbreader.book 書籍、書籤等相關model,數據庫,工具類
org.geometerplus.fbreader.bookmodel FBReader數據,會生成BookModel,裏面有Java的Model和本地返回的Model
org.geometerplus.fbreader.fbreader 主要是圖書顯示的FBView,還有一些選擇文字的Action,翻頁的Action
org.geometerplus.fbreader.formats 插件入口,FBReader把epub解析,txt解析等當作一個個插件
org.geometerplus.fbreader.library 此包中有圖書的做者類,圖書信息類,文件類,以及路徑生成的樹結構
org.geometerplus.fbreader.network 網絡相關
org.geometerplus.fbreader.sort 排序
org.geometerplus.fbreader.tips 網絡相關行爲提示
org.geometerplus.fbreader.tree 自定義的書結構,FBTree
org.geometerplus.fbreader.util 根據傳入的起始位置,獲取文字片斷

該包中另包含一個Paths類,其內容是整個FBReader項目的路徑相關。緩存

核心代碼包功能之org.geometerplus.zlibrary.core

包名 說明
org.geometerplus.zlibrary.core.application 並非Android裏的Application,而是做者自定義的管理應用
org.geometerplus.zlibrary.core.constants 各類命名空間,其實就是各類url連接
org.geometerplus.zlibrary.core.drm 加密相關
org.geometerplus.zlibrary.core.encodings 用於讀取encoding/Encodings.xml內的編碼
org.geometerplus.zlibrary.core.filesystem 裏有各類File類,好比壓縮File,資源File,本地File等
org.geometerplus.zlibrary.core.filetypes 文件類型
org.geometerplus.zlibrary.core.fonts 字體信息
org.geometerplus.zlibrary.core.image 圖片加載,圖片處理相關的包
org.geometerplus.zlibrary.core.language 編碼檢測包
org.geometerplus.zlibrary.core.library ZLibrary獲取FBReader版本,系統信息,DPI,調節屏幕亮度等
org.geometerplus.zlibrary.core.money Money model和exception
org.geometerplus.zlibrary.core.network Cookie數據庫創建,網絡請求,網絡管理相關的包
org.geometerplus.zlibrary.core.options FBReader自定義的數據類型,好比ZLBoolean3Option,ZLColorOption
org.geometerplus.zlibrary.core.resources 本地資源文件
org.geometerplus.zlibrary.core.tree ZLTree樹結構數據基類,圖書目錄數據爲此類子類
org.geometerplus.zlibrary.core.util 各類工具類
org.geometerplus.zlibrary.core.view 自定義的view類,是閱讀界面顯示的最高抽象類,以及事件監聽,處理
org.geometerplus.zlibrary.core.xml 解析xml

核心代碼包功能之org.geometerplus.zlibrary.text

包名 說明
org.geometerplus.zlibrary.text.hyphenation 根據斷字來判斷是哪一種語言
org.geometerplus.zlibrary.text.model 一個抽象類包,有對文字的處理,以及對段落的處理,保存文字到緩存
org.geometerplus.zlibrary.text.view 文字被結構化,文字塊,一行文字,文字段,一頁,都在此包下處理,以及顯示的view

核心代碼包功能之org.geometerplus.zlibrary.ui.android

包名 說明
org.geometerplus.zlibrary.ui.android.error bug報告
org.geometerplus.zlibrary.ui.android.image 圖片獲取和管理
org.geometerplus.zlibrary.ui.android.library 錯誤報告,程序的主Activity,Application再次包抽象化
org.geometerplus.zlibrary.ui.android.network Cookie數據庫操做
org.geometerplus.zlibrary.ui.android.util 顏色處理工具類
org.geometerplus.zlibrary.ui.android.view 各類翻頁效果

至此,FBReader核心的代碼結構及淺析已結束,固然因爲接觸時間有限不免有存在錯誤或描述不清楚的地方,還但願各位大佬能給予指正。下一篇將淺談FBReader是如何打開一本書,以及後續一些處理邏輯的分析。網絡

相關文章
相關標籤/搜索