
1. 项目背景与核心功能Uncle小说是一款开源的PC端小说阅读器支持Windows和MacOS双平台。它的核心功能是通过智能解析技术实现全网小说的内容获取和阅读体验优化。作为一个长期使用该软件的老用户我发现它在停止维护后仍然具有很高的实用价值这也是我决定深入研究其源码并进行修复的初衷。这款软件最吸引我的地方在于它的书源模式设计。不同于传统阅读器需要手动导入书源Uncle小说能够自动识别和解析各大小说网站的目录结构。实测下来对于起点、纵横等主流小说网站的支持非常稳定解析成功率能达到90%以上。软件还内置了有声小说支持这在同类工具中算是比较少见的特色功能。2. 环境准备与源码获取2.1 开发环境配置在开始编译前我们需要准备以下开发环境JDK 11这是项目的最低要求推荐使用OpenJDK。我在Windows 10上测试过AdoptOpenJDK 11.0.15和Amazon Corretto 11.0.18都能正常工作Gradle 7.x项目使用Gradle作为构建工具建议安装7.5以上版本Git用于克隆源码仓库版本建议2.30对于Windows用户还需要额外安装exe4j用于生成Windows可执行文件Inno Setup制作安装包的工具环境变量配置是个容易踩坑的地方。记得将JDK的bin目录和Gradle的bin目录都添加到系统PATH中。我遇到过因为PATH设置不当导致gradlew.bat执行失败的情况错误提示往往不太明显。2.2 源码获取方式官方源码仓库已经停止维护但我们可以通过以下两种方式获取代码直接下载ZIP包wget https://github.com/unclezs/uncle-novel/archive/refs/heads/main.zip这种方式简单快捷适合只想快速尝试编译的用户。Git克隆推荐git clone https://github.com/unclezs/uncle-novel.git cd uncle-novel使用Git克隆可以保留完整的提交历史方便后续追踪代码变更。我在实际项目中创建了自己的fork仓库这样可以在不影响原项目的情况下进行修改。3. 关键问题分析与解决3.1 自动更新机制破解原软件通过jfx-launcher模块实现自动更新功能这会导致两个问题启动时强制检查更新由于服务器已关闭导致卡死更新后会覆盖本地修改的版本经过分析源码我发现更新逻辑主要在Launcher.java的syncManifest方法中。我的解决方案是克隆jfx-launcher的源码仓库修改syncManifest方法直接返回false重新编译生成jar包关键修改代码如下public boolean syncManifest() { log.info(更新检查已禁用); return false; }3.2 启动弹窗屏蔽软件启动时会显示一个强制退出的模态对话框。通过全局搜索错误信息在AppStarter.java中找到相关代码// 注释掉以下两行 // ModalBox.none().message(bye~).title(bye~).cancel(bye~).showAndWait(); // App.stopApp();这个修改需要重新编译主程序模块才能生效。注意修改后要清理之前的构建缓存否则可能会遇到奇怪的运行时问题。4. 完整编译与打包流程4.1 分模块编译项目采用多模块结构需要按顺序编译编译jfx-launchercd jfx-launcher ./gradlew build编译成功后生成的jar包位于build/libs目录下。需要将这个文件复制到本地Gradle缓存目录通常是~/.gradle/caches。编译主程序cd ../app ./gradlew build这个过程会下载所有依赖项首次执行可能需要较长时间。我在测试时遇到过依赖下载失败的情况可以通过添加阿里云镜像来解决repositories { maven { url https://maven.aliyun.com/repository/public } mavenCentral() }4.2 跨平台打包项目支持生成多种平台的安装包Windows./gradlew packageWin64打包需要exe4j和Inno Setup的支持。生成的安装包位于app/build/packager目录。MacOS./gradlew packageMacMac打包需要Xcode命令行工具。注意M1芯片可能需要额外配置。Linux./gradlew packageLinuxLinux打包目前还存在一些问题建议优先使用Windows或Mac版本。5. 常见问题排查指南5.1 依赖下载失败错误表现Could not resolve all files for configuration :app:runtimeClasspath解决方案检查网络连接确保能访问Maven中央仓库尝试添加国内镜像源执行clean和--refresh-dependencies命令5.2 Windows打包工具缺失错误信息Error: Inno Setup compiler (iscc) not found in PATH解决方法确认已安装Inno Setup 6将安装目录如C:\Program Files (x86)\Inno Setup 6添加到系统PATH重启命令行终端5.3 版本兼容性问题有时会遇到JDK版本不兼容的情况错误提示可能包含unsupported class file version等信息。这时需要检查环境变量中的JAVA_HOME指向正确的JDK 11在gradle.properties中明确指定版本org.gradle.java.homeC:\\path\\to\\jdk116. 功能扩展建议完成基础修复后可以考虑进一步的功能增强书源管理添加书源导入导出功能阅读体验优化支持更多字体和排版选项本地缓存实现章节内容本地缓存减少重复解析插件系统通过插件机制扩展功能这些改进可以让软件更加实用。我在自己的版本中添加了深色模式切换快捷键大大提升了夜间阅读体验。修改主要集中在ThemeManager.java文件中通过监听系统主题变化自动切换界面风格。整个修复过程让我深刻体会到阅读他人代码的重要性。虽然一开始面对一个陌生项目会有些无从下手但通过逐步分析和调试最终能够理解其设计思路并做出改进这种成就感是无可替代的。建议有兴趣的开发者可以clone代码自己尝试修改遇到问题欢迎交流讨论。