阅读引擎开源项目调研总结
农历腊月初二,也是冬至后的第四个九天,俗称“四九”。冬至这一天开始数九,这就是人们所说的“提冬数九”。数上9天是一九,再数9天是二九……数到“九九”就算“九”尽了,“九尽杨花开”,那时天就暖了。《九九歌》是这样唱的:一九二九不出手;三九四九河上走;五九六九沿河望柳;七九开河,八九雁来;九九加一九,耕牛遍地走。
最近对网上开源的阅读器项目进行了调研,重点是github上的开源项目,对star比较多的项目一一下载下来进行了编译,运行,试用和总结,发现有做的非常好的,如FBReader,NovelReader等,也有根本就编译不通过,或者运行就挂掉的项目,我不太清楚这些项目为什么还会收获那么多star,也许是我的编译方法存在问题,但是给我的感觉这些项目对使用者来说不是很负责。以下是对调研过的项目做的总结,分成了三大块,推荐的,借鉴意义不大的,编译报错或存在运行问题的这三块。有需要的可以研究一下我总结的文档,也许会让你少走些弯路。如果总结有不当或者欠妥之处,还请见谅。此篇文章只是建议或者为你调研提供了一个方向,最好自己能够亲身都跑一下这些项目。
一、推荐的开源项目
主要是对针对排版引擎有参考意义的项目。
1、FBReader
--------------- 官方demo,比较有借鉴价值。编译通过,运行较正常 。
推荐参考指数:***
工程:
FBReader-Android-2-master( android studio工程,可以替代FBReaderJ)
地址:https://github.com/geometer/FBReader-Android-2
简介:
FBReaderJ是老的eclispe工程,地址:https://github.com/geometer/FBReaderJ
FBReaderJ中有的FBReader-Android-2-master基本都有,可以代替FBReaderJ 使用,并且FBReader-Android-2-master是一个Android studio工程。
jni涉及到的一些native工程 :
(1)、linebreak :
Liblinebreak is an implementation of the line breaking algorithm as described in Unicode 6.0.0 Standard Annex 14, Revision 26. It breaks lines that contain Unicode characters. It is designed to be used in a generic text renderer. FBReader is one real-world example, and you may also check some simple sample code, like showbreak and breaktext.
应该是用来换行排版使用的
(2)、Expat :
Expat是一个用C语言开发的、用来解析XML文档的开发库,它最初是开源的、Mozilla项目下的一个XML解析器。
(3)、DeflatingDecompressor :
应该是进行压缩的。
(4)、NativeFormats
用来对不同格式进行兼容处理的,应该包括,
css,doc,fb2,html,xhtml, oeb,pdb ,rtf ,txt等格式。
功能介绍:
功能非常强大,想的到想不到的设置在这里都有,后续会对其排版引擎专门总结。
2、FBReader_AS
---------------adolfAn重构的FBReader工程,有编译错误,解决后运行正常。
推荐参考指数:*****
工程:FBReader_AS-master
地址:https://github.com/adolfAn/FBReader_AS
简介:
1、基于Android_Studio开发的FBReader2.5.10版本;
2、基于FBReader开发的小说阅读器网站:http://www.duoduoxiaoshuo.com/ ;
3、更多请关注国内最大FBReaderQQ开发群:321171877;
功能介绍:
可以参考内容较多,对官方FBReader结构进行了调整,重点研究对象。
1、双列视图;
2、本地搜索(重点参考);
3、支持txt,epub,pdf需要安装插件;
4、和其它功能和官方的相同;
3、FBReaderJBook
--------------- 在FBReader基础上二次开发的工程
工程:FBReaderJBook-master
推荐参考指数:*
地址:https://github.com/zzyyppqq/FBReaderJBook
简介:
FBReaderJBook Android电子书阅读
功能介绍:
对FBReader进行了扩展,只有如下功能可以参考,其它被删除。
1、本地书柜;
2、在线书库;
3、本书目录;
4、我的书签;
5、内容查找;
6、支持txt,epub,pdf需要安装插件;
容易崩溃,打开图书失败后,无法再打开文件。
4、BookReader-master
--------------- 编译通过,能正常运行
工程:BookReader-master
推荐参考指数:***
地址:https://github.com/JustWayward/BookReader
简介:
BookReader 任阅
"任阅" 网络小说阅读器,实现追书推荐收藏、书籍/标签检索、模拟翻书的翻页效果、缓存书籍、日夜间模式、书签、txt/pdf/epub书籍阅读、字体/主题/亮度设置、Wifi传书等功能~ https://github.com/smuyyh
功能介绍:
1、仿真翻页(重点参考),滑动覆盖翻页,无动画;
2、缓存策略;按章节下载
3、书签(重点参考);
4、目录;
5、主页面;
6、Wifi传书(重点参考);
7、扫描本地书籍;
8、支持txt,epub,
5、PageTurner-master
--------------- 编译通过,能正常运行
工程:PageTurner-master
推荐参考指数:***
地址:https://github.com/NightWhistler/PageTurner
简介:
Android e-book reader with cloud synchronization http://pageturner-reader.org
2年以上没有再维护更新
应用做的有点粗糙,老外的项目
功能介绍:
1、支持ePub格式文件;
2、添加标签和展示;
3、书内关键字搜索和搜索内容展示;
4、文字搜索,分享,选择所有,复制功能;
5、文字翻译功能;
6、搜索rom中的ePub文件;
7、搜索书名;
8、自动滚动,以及时间和样式设置(从上到下,时间进度条两种)
9、支持多国语言;
10、切换字体;
11、水平,垂直外边距;
12、行距;
13、文字,背景颜色;
14、滑动翻页;
15、其他
6、NovelReader-master
--------------- 解决部分错误后编译通过,重点推荐项目,如果项目中只需要支持txt,则这个项目非常适合
工程:NovelReader-master
推荐参考指数:*****
地址:https://github.com/newbiechen1024/NovelReader
简介:
仿照"任阅"的追书、看书的小说阅读器。重写"任阅"的代码,优化代码逻辑和代码结构,降低内存使用率。重写小说阅读器,支持网络阅读、本地阅读(支持分章,虚拟分章)。支持仿真翻页、上下滚动翻页等翻页效果。支持小说断点续传功能。优化用户使用体验。
相对于原作增加的功能与改进:
重写代码逻辑,优化代码结构,降低内存使用率
采用 sql 数据库对数据进行存储。 (原作者是采用ACache类将数据修改成文本存储)
增加书本的断点续传功能 (仅支持单任务下载)
支持小说更新提示。
重写小说阅读器,仿掌阅设计。提供的功能如下
支持翻页动画:仿真翻页、覆盖翻页、上下滚动翻页等翻页效果。
支持页面定制:亮度调节、背景调节、字体大小调节
支持全屏模式(含有虚拟按键的手机)、音量键翻页
支持页面进度显示、页面切换、上下章切换。
支持在线章节阅读、本地书籍查找。
支持本地书籍加载到页面(支持本地书籍分章、加载速度快、耗费内存少)
采用了以下开源框架:
butterknife ==> View注入
rxandroid
rxjava
greenDAO ==> 数据库
retrofit ==> 网络
Glide ==> 图片加载
retrolambda ==> 在AndroidStudio3.0以下版本支持Lambda
treader ==> 小说阅读页面的切换动画及整体架构都来自这个项目。
AndroidTagGroup ==> 标签效果
功能介绍:
1、翻页效果(仿真(重点参考,和BookReader-master是不同的仿真翻页效果)、覆盖(重点参考)、滚动(上下滚动,重点参考)、无(重点参考))、
2、设置字号(重点参考);
3、亮度调节,
4、背景设置,
5、夜间模式,
6、目录;(左侧抽拉式菜单)
7、扫描本地文件和智能导入(重点参考);
8、下载列表(重点参考);
9、书本的断点续传功能 (仅支持单任务下载);
10、只支持txt格式;
11、上下章节快速切换;
12、采用 sql 数据库对数据进行存储 ;
13、支持小说更新提示;
7、MaterialHome
--------------- 图书展示类App,没有设置,只有单一阅读
工程:MaterialHome-master
推荐参考指数:*
地址:https://github.com/hymanme/MaterialHome
简介:
一个基于 Material Design 风格设计的图书展示类App,豆瓣图书,在线电子书。
虽然叫 Material Home,但是实质是一款图书展示类 app,目前正处于逐步完善阶段,也期望感兴趣的朋友一起来完善“她”。目前图书接口来源于豆瓣图书 api,特此感谢豆瓣提供的免费接口。本 app 采用的是 MD 设计风格以及一些友好的交互动画,使用了一些最新的热门技术。
功能介绍:
滑动翻页阅读,material设计,抽屉菜单
8、light-novel-library_Wenku8_Android
--------------- 编译通过,运行正常
工程:LightNovelLibrary
推荐参考指数:**
地址:https://github.com/MewX/light-novel-library_Wenku8_Android
简介:
light-novel-library_Wenku8_Android-master 轻小说文库已不再维护。
[NOT MAINTAINED]轻小说文库(Wenku8)安卓版第三方公益App,Material Design风格、无广告、不盈利的轻小说阅读器(light novel reader)。 P.S. 下一代阅读器—— Project PRPR!已在设计中!欢迎关注以及建议!已获取一份wenku8数据,考虑小范围维护
功能介绍:
1、需要登录然后在pc端收藏书籍后,才能使用;
2、导入本地字体(重点参考);
3、导入本地背景图片;
4、翻页效果;
5、设置行距,段落间距,段落边距;
9、treader
--------------- 编译通过,运行也正常
工程:treader-master
推荐参考指数:***
地址:https://github.com/PeachBlossom/treader
简介:
如风小说阅读器,添加书签、目录跳转、(仿真、覆盖、滑动、无)翻页动画效果、日夜间模式、本地txt书籍阅读、字体/字体大小/主题/亮度设置
功能介绍:
1、翻页效果--仿真(有bug),覆盖,滑动(重点看下),无页
2、设置字体(重点参考)
3、字号大小,屏幕亮度,背景图片
4、目录和添加书签(新页面打开形式,可以参考);
5、仅支持txt格式;
6、demo读书页面可以参考;
10、Jreader
--------------- 编译通过
工程:Jreader-master
推荐参考指数:**
地址:https://github.com/Focfa/Jreader
简介:
一款仿掌阅iReader的电子书阅读器 apk:https://github.com/Focfa/Jreader/blob/master/Jreader.apk
该阅读器实现了本地书架、从SD卡导入电子书 、语音朗读功能。阅读时具有仿真翻页、自动记录阅读进度、可设置字体大小、设置阅读亮度、设置书签、夜间日间模式切换及具有进度调整功能。
功能介绍:
1、语音朗读(重点参考);
2、亮度,字体;
3、添加,跳转书签,显示目录(新页面打开形式,可以参考);
4、跳转到具体某页;
5、仿真翻页效果;
11、HwTxtReader
--------------- 编译通过
工程:HwTxtReader-master
推荐参考指数:*
地址:https://github.com/bifan-wei/HwTxtReader
简介:
轻量级Txt阅读器 、txt播放组件、txt文件加载控件、TxtReaderView。你可以通过该库快速实现加载播放txt文件,支持常见的阅读器设置操作。
功能介绍:
1.字体设置与调节。包括大小、颜色、是否加粗。
2.页面风格设置,夜间模式等。
3.进度跳转与当前进度获取。
4.章节获取与章节跳转。
5.可以滑盖翻页与平移翻页切换。
6.可以进行长按滑动选择文字。
7.数字与英文字符显示特点颜色。
8、仅支持txt;
总体效果不是不太好,bug较多。
12、FriendBook
--------------- 编译通过
工程:FriendBook-master
推荐参考指数:****
地址:https://github.com/z-chu/FriendBook
简介:
FriendBook-master 友书
"友书" 小说阅读app
功能介绍:
有一定参考价值
1、翻页(仿真,覆盖都可以参考),设置模式等;
2、阅读页面(框架可以重点参考);
3、目录(抽屉式菜单目录可以参考);
4、翻页滑动效果(重点参考);
5、亮度调节(重点参考);
6、书籍编辑页面(重点参考);
13、FolioReader-Android
--------------- 编译通过
工程:FolioReader-Android-master
推荐参考指数:**
地址:https://github.com/FolioReader/FolioReader-Android
简介:
A Java ePub reader and parser framework for Android.
功能介绍:
1、老外的项目(epub格式文件可以参考);
2、语音朗读(重点参考);
14、epub3reader
--------------- 编译通过
工程:EPUB3Reader_studio
推荐参考指数:**
地址:https://github.com/pettarin/epub3reader
简介:
EPUB3Reader Android App
功能介绍:
可以打开epub格式文件
15、android-pdfview
--------------- 编译通过,可以借鉴打开pdf格式文件
工程:android-pdfview-master
推荐参考指数:**
地址:https://github.com/JoanZapata/android-pdfview
简介:
android-pdfview-master
[DEPRECATED] A fast PDF reader component for Android development http://joanzapata.com/android-pdfview/
功能介绍:
pdf格式文件可以参考,但没有各种设置项
16、Android-MuPDF
--------------- 编译通过,可以借鉴打开pdf格式文件
工程:Android-MuPDF-master_studio
推荐参考指数:**
地址:https://github.com/joniks/Android-MuPDF
简介:
Android-MuPDF-master_studio
已经2年以上不再更新,重新将其从eclipse导入studio项目,编译通过,并且提供了demo程序可用。
功能介绍:
MuPDF usage for magazine reading
二、个人感觉对于排版引擎借鉴意义不大的项目:
1、simplereader-master
-------------------------------- 编译通过,react native方式实现
simplereader --使用react native实现
参考"任阅" 网络小说阅读器,一款小说阅读器
项目基于ReactNative + Redux的框架开发。项目中的API均来自追书神器,纯属共享学习之用,不得用于商业!!
地址:https://github.com/jsntjinjin/simplereader
功能:翻页效果
2、CloudReader
--------------------------------编译通过,正常运行
云阅:一款基于网易云音乐UI,使用Gank.Io及豆瓣api开发的符合Google Material Design的Android客户端。项目采取的是MVVM-DataBinding架构开发,现主要包括:干货区、电影区和书籍区三个子模块。DIY网易云音乐原来是如此Cool~
https://github.com/youlookwhat/CloudReader
https://fir.im/cloudreader
功能:只有书籍列表,没有阅读相关的功能
3、FastReader
-------------------------------- 功能很少,参考意义不是很大
FastReader-master 快读
一款移动端电子阅读器
https://github.com/CodingBingo/FastReader
功能:导入本地txt文本
4、Reader
-------------------------------- 编译通过,比较简单,参考意义不大
Reader-master
Android小说阅读器实现,分页显示逻辑实现,滑动翻页,仿真翻页效果实现
https://github.com/nspduanlei/Reader
5、ebook
-------------------------------- 编译通过,问题太多,没有什么参考意义
使用赛贝尔曲线的电子书,可以随意翻卷
https://github.com/watermelon/ebook
6、RedReader
-------------------------------- 编译通过,Reddit client (新闻网站名)红迪网 客户端
RedReader-master
An unofficial open source Reddit client for Android.
https://github.com/QuantumBadger/RedReader
7、LNReader-Android
-------------------------------- 编译通过,国外的项目,参考意义不大
Light novel reader for android test project collab
https://github.com/calvinaquino/LNReader-Android
三、存在编译或者运行问题的项目
1、FBreader
-------------------------------- 缺少文件无法在studio编译通过
FBreader-master_other_studio
仿ireader阅读器
https://github.com/AlixMing/FBreader
2、IReader
-------------------------------- 编译通过,无法运行,导入txt后程序崩溃
简阅 --- 一个简约的本地txt阅读器。
https://github.com/YuanWenHai/IReader
3、MuPDFViewer
-------------------------------- 无法编译通过,缺少文件mupdf/fitz.h
MuPDFViewer_stuio
基于MuPDF的Android PDF阅读器。
https://github.com/liumeng1201/MuPDFViewer
4、EpubRead
-------------------------------- 编译通过,运行异常
EpubRead-master
Android平台下的epub阅读器,修改背景,查看目录等
https://github.com/Jiangzqts/EpubRead
5、coolreader
-------------------------------- 编译无法通过
coolreader-master_studio
点酷听书,让你不再总是疲劳看书了,真人发音准确非常,还有海量电子书等你来看哦。 http://www.ejiakt.com
https://github.com/dotcool/coolreader
6、android-reader
-------------------------------- 无法编译通过
android-reader-master_studio
public book reader for android
https://github.com/ymcao/android-reader
报错:
fatal error: 'dos/dos.h' file not found
7、BookReader
-------------------------------- 编译通过,运行添加文件崩溃
BookReader-master_1 阅读
一款txt文本阅读器,基于Rxjava2+MVP 主要功能: 1.文档选择导入,文档扫描。 2.Txt文件阅读,支持背景,字体更换,亮度等属性调节 3.支持多种翻页模式 4.目录提取,书签添加
https://github.com/ziktang/BookReader
8、news-android
-------------------------------- 未编译通过,需要studio3.0以上的环境
news-android-master
iphone::newspaper: Android client for the Nextcloud news/feed reader app https://play.google.com/store/apps/de…
https://github.com/nextcloud/news-android
以上就是开源阅读项目调研的总结情况,如有错误或者问题还请指出,谢谢。
image本公众号将以推送Android各种技术干货或碎片化知识,以及整理老司机日常工作中踩过的坑涉及到的经验知识为主,也会不定期将正在学习使用的新技术总结出来进行分享。每天一点干货小知识把你的碎片时间充分利用起来。