項目官網:fbreader.org/androidhtml
FBReader是一個開源電子書閱讀器,現在已經支持不少設備。不只有PC版,支持的操做系統有GNU/Linux,MicrosoftWindows,也支持移動終端設備,好比NokiaInternetTablets。早在2008年4月13日,就已經有Android版本,即你們熟知的FBReaderJ。android
具備如下特性:c++
改項目是eclipse編寫的,因此第一步,把這個項目變成AS項目並導入AS 建立aidl目錄,將FBReader項目中使用的aidl文件放於此 在此必定切記不要修改項目包名,不然將是一場災難!!!github
編譯項目so文件 若是將FB做爲依賴的話,還須要修改FBReaderIntents中包名常量DEFAULT_PACKAGE爲本身應用的包名數據庫
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.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.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.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.hyphenation | 根據斷字來判斷是哪一種語言 |
org.geometerplus.zlibrary.text.model | 一個抽象類包,有對文字的處理,以及對段落的處理,保存文字到緩存 |
org.geometerplus.zlibrary.text.view | 文字被結構化,文字塊,一行文字,文字段,一頁,都在此包下處理,以及顯示的view |
包名 | 說明 |
---|---|
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是如何打開一本書,以及後續一些處理邏輯的分析。網絡