English · 中文
一款开源的 Flutter 网络小说阅读器。支持本地书源、书架管理、多种翻页方式与微信读书风格纸张主题。
| 包名 | Application ID | 许可 |
|---|---|---|
book |
com.opensource.ikanshu |
Apache-2.0 |
- 书架 / 发现 / 我的 三栏主页
- 本地书源引擎(Legado 规则子集:HTTP + CSS/JSON/JS 规则)
- 阅读器
- 仿真 / 覆盖 / 无动画 / 纵向滚动
- 微信风格纸张主题(白 / 米 / 绿 / 夜)
- 自定义字体导入
- 章节缓存与分页缓存(
reader.db) - 阅读进度自动保存
- 换源与目录同步
- Firebase Analytics + Crashlytics(可选,需
google-services.json) - Android 优先;无维护 iOS 工程树
| 类别 | 选型 |
|---|---|
| 语言 / SDK | Dart 3.12+ / Flutter 3.44+ |
| 状态管理 | Riverpod(ChangeNotifierProvider) |
| 网络 | Dio 5 |
| 路由 | Fluro |
| 本地存储 | sqflite(reader.db)+ shared_preferences |
| 书源 JS | flutter_js(本地补丁,见 third_party/flutter_js) |
| 分页 | Rust book_pager(可选)+ Dart TextPainter 回退 |
| 统计 / 崩溃 | Firebase Analytics / Crashlytics |
架构与模块划分详见 CLAUDE.md。
- Flutter 3.44 稳定版(Dart 3.12)
- Android SDK(
ANDROID_HOME/local.properties中sdk.dir) - Windows 上构建可选:MinGW(host 版
libbook_pager)、Android NDK(arm64 / x86_64)
flutter doctor# 依赖
flutter pub get
# 运行(已连接设备 / 模拟器)
flutter run
# 静态分析
flutter analyze
# 测试
flutter test# Debug
flutter build apk --debug
# Release(全 ABI)
flutter build apk
# arm64 专用脚本(混淆 / split / SKSL 等,见脚本注释)
build_arm64.bat
# 或
build.bat| Workflow | 文件 | 触发 |
|---|---|---|
| CI | .github/workflows/ci.yml |
push / PR:flutter analyze + flutter test |
| Build APK | .github/workflows/build.yml |
master/main push、标签 v*、手动 workflow_dispatch、repository_dispatch: starred |
发布示例:
# 打标签并推送 → 自动构建并创建 GitHub Release
git tag v1.0.0+10
git push origin v1.0.0+10可选签名 Secrets(仓库 → Settings → Secrets and variables → Actions):
| Secret | 说明 |
|---|---|
ANDROID_KEYSTORE_BASE64 |
keystore 文件 base64(base64 -w0 key.jks) |
ANDROID_KEYSTORE_PASSWORD |
store 密码 |
ANDROID_KEY_ALIAS |
key 别名 |
ANDROID_KEY_PASSWORD |
key 密码 |
未配置时与本地一致:release 回退 debug 签名。产物上传为 Artifact;v* 标签额外挂到 Release。
build_book_pager.bat # Windows host DLL
build_book_pager.bat --android # arm64-v8a + x86_64 → jniLibs未打包对应 ABI 的 libbook_pager.so 时,自动回退到 Dart 分页。
- 将
google-services.json放到android/app/ - Firebase 控制台启用 Analytics 与 Crashlytics
- 启动时由
FirebaseBootstrap初始化;失败不阻塞 App
lib/
view/book/ # 书架、搜索、详情、阅读器
view/page_turn/ # 画布翻页
model/ # ChangeNotifier 业务模型
model/reader/ # 阅读器协作类(分页、缓存、换源…)
data/ # reader.db + repositories
source/ # 书源引擎
common/ # Dio、SpUtil、布局等
service/ # Firebase、缓存等
android/ # 声明式 Gradle(Kotlin DSL)
| 书架 | 搜索 | 历史 |
|---|---|---|
![]() |
![]() |
![]() |
| 阅读 | 设置 | 发现 |
|---|---|---|
![]() |
![]() |
![]() |
- 听书楼 — 听书客户端
感谢 JetBrains 为开源项目提供的 IDE 支持。





