6.8 KiB
6.8 KiB
代码库结构
分析日期: 2026-05-21
目录布局
ReadViewSDK/
├── Sources/
│ └── RDReaderView/ # SDK 实现(Swift)
│ ├── EPUBCore/ # EPUB 解压/解析/模型/分页/状态(Foundation/WebKit)
│ ├── EPUBTextRendering/ # TXT/TextBook 构建 + 文本渲染/搜索
│ ├── EPUBUI/ # 阅读器控制器 UX、设置、持久化、工具视图
│ ├── LegacyRDReaderController/# 旧版阅读器控制器 + 工具视图
│ ├── Resources/ # 资源(pod resource bundle)
│ ├── RDReaderView.swift # 核心分页视图 + DS/delegate 协议
│ ├── RDReaderFlowLayout.swift # 滚动模式的 CollectionView 分页布局
│ └── RDURLReaderController.swift # 基于 URL 的入口控制器
├── ReadViewDemo/
│ ├── ReadViewDemo/ # Demo App 源码/资源(UIKit)
│ ├── ReadViewDemo.xcodeproj/ # Demo target 的 Xcode project
│ ├── ReadViewDemo.xcworkspace/ # 集成 Pods 工程的 workspace
│ ├── Podfile # Demo 的 Pods 集成(本地 path)
│ └── Podfile.lock # Demo 的锁定依赖版本
├── Pods/ # 仓库根目录的 CocoaPods 产物(本地开发)
├── Podfile # 仓库级 Pods 集成脚本(见说明)
├── RDReaderView.podspec # SDK 的 Podspec(分发与依赖声明)
├── Doc/ # 参考资料/分析产物
└── .planning/codebase/ # 生成的代码库地图(本目录)
目录职责
Sources/RDReaderView/EPUBCore:
- 目的:EPUB 解压 + 解析 + 核心模型 + 分页 + 导航状态。
- 关键文件:
Sources/RDReaderView/EPUBCore/RDEPUBParser.swiftSources/RDReaderView/EPUBCore/RDEPUBPaginator.swiftSources/RDReaderView/EPUBCore/RDEPUBPublication.swiftSources/RDReaderView/EPUBCore/RDEPUBReadingSession.swift
Sources/RDReaderView/EPUBUI:
- 目的:阅读器 UX 协调与对外 reader controller API。
- 关键文件:
Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swiftSources/RDReaderView/EPUBUI/RDEPUBReaderConfiguration.swiftSources/RDReaderView/EPUBUI/RDEPUBReaderPersistence.swift
Sources/RDReaderView/EPUBTextRendering:
- 目的:从
.txt构建RDEPUBTextBook,并提供渲染/搜索等能力。 - 关键文件:
Sources/RDReaderView/EPUBTextRendering/RDPlainTextBookBuilder.swiftSources/RDReaderView/EPUBTextRendering/RDEPUBTextBookBuilder.swiftSources/RDReaderView/EPUBTextRendering/RDEPUBTextRenderer.swift
Sources/RDReaderView(顶层文件):
- 目的:SDK 的对外入口与核心分页视图/布局基础设施。
- 关键文件:
Sources/RDReaderView/RDURLReaderController.swiftSources/RDReaderView/RDReaderView.swiftSources/RDReaderView/RDReaderFlowLayout.swift
ReadViewDemo/ReadViewDemo:
- 目的:Demo App,用于发现内置书籍并打开 SDK。
- 关键文件:
ReadViewDemo/ReadViewDemo/ViewController.swiftReadViewDemo/ReadViewDemo/AppDelegate.swiftReadViewDemo/ReadViewDemo/SceneDelegate.swift
关键文件位置
SDK 入口点:
Sources/RDReaderView/RDURLReaderController.swift:URL 入口(epub/txt 路由)。Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift:主阅读器控制器(EPUB + external TextBook)。Sources/RDReaderView/RDReaderView.swift:分页视图与 data source/delegate 协议。
Demo 入口点:
ReadViewDemo/ReadViewDemo/AppDelegate.swift:App 生命周期入口(@main)。ReadViewDemo/ReadViewDemo/SceneDelegate.swift:Window 与 root navigation controller 配置。ReadViewDemo/ReadViewDemo/ViewController.swift:书籍列表 → 打开 reader。
配置/打包:
RDReaderView.podspec:SDK 打包(源码 + 资源 + 依赖)。ReadViewDemo/Podfile:Demo 的 Pods 集成(pod 'RDReaderView', :path => '..')。ReadViewDemo/ReadViewDemo.xcworkspace/contents.xcworkspacedata:workspace 结构。
命名约定
模块(目录)划分:
EPUBCore、EPUBUI、EPUBTextRendering:按职责分层拆分于Sources/RDReaderView/下。
类型前缀:
RD*:阅读器容器视图与 legacy controller/tooling(例如RDReaderView、RDURLReaderController)。RDEPUB*:EPUB 解析/分页/阅读器 UI 域(例如RDEPUBParser、RDEPUBPaginator、RDEPUBReaderController及相关模型)。
组件关系(从入口到渲染)
RDURLReaderController根据文件类型选择实现:.epub→RDEPUBReaderController(epubURL:configuration:persistence:).txt→RDPlainTextBookBuilder→RDEPUBReaderController(textBook:...)- 回退路径:分页失败时使用
UITextView展示原始文本 - 入口文件:
Sources/RDReaderView/RDURLReaderController.swift
RDEPUBReaderController负责阅读器生命周期:- parse(
RDEPUBParser)→ publication(RDEPUBPublication)→ paginate(RDEPUBPaginator)→ display(RDReaderView) - 通过
RDEPUBReaderPersistence持久化设置/位置/书签/高亮等 - 入口文件:
Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift
- parse(
新代码应放在哪里
新增面向读者的 UI 功能(工具视图/菜单/手势):
- 主要:
Sources/RDReaderView/EPUBUI/ - 若影响分页呈现:
Sources/RDReaderView/RDReaderView.swift或Sources/RDReaderView/RDReaderFlowLayout.swift
新增 EPUB 解析/模型支持:
- 主要:
Sources/RDReaderView/EPUBCore/(parser/models/resolver)
新增纯文本导入/渲染行为:
- 主要:
Sources/RDReaderView/EPUBTextRendering/
更新 Demo / 复现步骤:
- 主要:
ReadViewDemo/ReadViewDemo/
特殊目录说明
Pods/ 与 ReadViewDemo/Pods/:
- 用途:CocoaPods 生成产物,服务本地开发/示例工程。
- 是否生成:是。
- 是否提交:当前工作区中存在(通常按生成目录对待)。
Doc/:
- 用途:文档/分析资料(不属于 SDK 运行时的一部分)。
Evidence(关键证据)
检查过的关键文件:
RDReaderView.podspecPodfileReadViewDemo/PodfileReadViewDemo/ReadViewDemo.xcodeproj/project.pbxprojReadViewDemo/ReadViewDemo.xcworkspace/contents.xcworkspacedataReadViewDemo/ReadViewDemo/ViewController.swiftSources/RDReaderView/RDURLReaderController.swiftSources/RDReaderView/EPUBUI/RDEPUBReaderController.swiftSources/RDReaderView/EPUBCore/RDEPUBParser.swiftSources/RDReaderView/EPUBCore/RDEPUBPaginator.swift
结构分析:2026-05-21