开源分享一个 Flutter 混开带 Git 只读功能的阅读器 WReader

5 篇文章 0 订阅
1 篇文章 0 订阅

1 WReader

一个功能简单、页面简陋、却又实用的带 Git 只读功能的阅读器。提供私有 Git 仓库克隆,分支、标签检出与切换等功能,主要用于阅读 Markdown 笔记与其它文件(支持导出与其它 App 打开)。
支持 https://xxx.gitssh://xxx.gitgit@xxx.git 等格式(可使用 https://gitee.com/tea_too_tea_too/WReaderDemo.git 该仓库进行测试,该仓库是 public 仓库,无需鉴权信息)*。

WReader

Github 地址 :https://github.com/Bottlezn/wreader
gitee 仓库地址,我会定期更新的 : https://gitee.com/tea_too_tea_too/wreader

最新 Release 版本下载地址:

1.1 功能图示

  • 克隆、浏览
    克隆 浏览

  • 最近阅读与设置页面
    最近阅读 设置

1.2 功能列表

  1. 从远程 Git 仓库中 Clone 项目到本地,支持使用密钥对与账户密码检出,v0.4 版本之后支持 https:// 协议无鉴权信息检出,一次 Clone 之后无需在输入鉴权信息( 可使用 https://gitee.com/tea_too_tea_too/WReaderDemo.git 该仓库进行测试,该仓库是 public 仓库,无需鉴权信息。 )。
  2. 从 Remote 中检出 Branch 或者 tag 到本地 Branch,切换本地分支时不需要网络,因为 WReader 不会自动帮你 Pull。
  3. 自由 Pull 那些从 远程 Branch 中检出的本地 Branch ,tag 行不通哦。同时带有 Fetch 功能。
  4. 支持亮暗模式自由切换,无论是在设置页面还是阅读页面都可全局切换亮暗模式。
  5. 自动转换仓库中的本地图片,笔记中的图片不需要在带有一个外网地址啦。
  6. 使用 strapdown JS 库与 bootstrap CSS 主题提供较为美观的阅读体验。
  7. 提供最近阅读功能,在仓库文件列表与阅读记录中均带有搜索功能。
  8. 也可长按文件使用手机自带 App 打开文件,同时也支持导出文件哦。 导出后会提示导出目录
  9. 还提供 国际化环境切换 、 无效仓库清除 、 配置文件导入 等功能。
  10. 不提供本地编辑功能哦。

1.3 快速使用

建议使用 json 文件导入的方式来 Clone 项目。

  • 密钥对导入格式:authenticationWay 是的值为2,priKey , pubKeypriKeyPassword 使用 Base64 编码。其中 priKey 必须是 BEGIN RSA PRIVATE KEY 开头的,不要使用 BEGIN OPENSSH PRIVATE KEY 开头的,WReader 依赖的 JSCH 库不支持该格式。
    {
        "gitUri":"git仓库的uri,支持git与http协议",
        "targetDir":"clone仓库的目录名称,就是`git clone git@xxx targetDir`中的dir。可以不填写,使用默认值",
        "authenticationWay":2,
        "priKey":"使用Base64编码过的私钥字符串内容,必须是这个`BEGIN RSA PRIVATE KEY`开头的",
        "pubKey":"使用Base64编码过的公钥字符串内容",
        "priKeyPassword":"使用Base64编码过的私钥密码,私钥没有加密的话传空即可"
    }
    
  • 账号密码导入格式: authenticationWay 是的值为1。
    {
        "gitUri":"git仓库的uri,支持git与http协议",
        "targetDir":"clone仓库的目录名称,就是`git clone git@xxx targetDir`中的dir。可以不填写,使用默认值",
        "authenticationWay":1,
        "account": "使用Base64编码过的账号", 
        "pwd": "使用Base64编码过的密码内容"
    }
    

1.4 注意事项

  1. WReader 暂不支持 iOS 设备。因为本人主要做 Android 开发,最近学了几天 iOS 发现搞不定 Objective-Git 的导入与使用。所以源码中的 WReaderHostiOS 只是一个集成了 Flutter Module 的空架子。有兴趣的朋友可以一起参与哦,算是抛砖引玉吧。之后我打算在业余时间努力研究一下 Flutter 调用 C 库 libgit2 的方法,争取在 Android&iOS 双端或更多端中用 Native 代码来实现 Git 的功能。
  2. 本 App 是本人自发需求,自己设计功能与 UI 、并自我测试的一个 App 。如有幸有很多朋友使用,那在这过程中肯定会有很多问题出现。在 App 的设置页面有日志收集功能,大家遇到问题可以其到该页面找找看。
  3. 其他尚未发现的问题,欢迎评论指出。我的邮箱:wdu_udw@163.com
  4. 如果你喜欢 WReader ,欢迎点赞评论支持哦。

2 项目引入

  1. Clone 项目:git clone git@github.com:Bottlezn/wreader.git
  2. 目前 v0.1 版本的 tag 是 v0.1。切换到该 tag,git chekout -b fromTag/v0.1 v0.1
  3. 假设根路径是 $ROOT_DIRcd $ROOT_DIR/wreader_flutter_module ,在 terminal 中运行
    flutter pub get
    flutter create .
    
  4. Android 项目 WReaderHostAndroid 直接使用 AndroidStudio 打开即可。
  5. iOS 项目 WReaderHostiOS 需要在 WReaderHostiOS 目录下运行 pod install之后再打开,我的 XCode 版本是 11 。

2.1 大概设计思路

WReader 是我在业余时间一点点设计、开发出来的:

  1. 绝大部分页面都是使用 Flutter 开发实现,下文不说明的页面均是 Flutter 页面。
  2. 阅读笔记 与 图片浏览 页面是使用 Android 原生开发的。另外 Android 端的 Git 功能是使用 JGit 库。
  3. Markdown 文件的解析使用 WebView 加载本地 Html 并搭配 strapdown.js ,将 Markdown 文件解析为 Html格式,再使用 bootstrap 与 jQuery 等 js 库 与 css 来渲染。
  4. iOS 端建议使用 Objective-Git 或者 libgit2 库来实现的 iOS 端的 Git 功能,关于笔记方面参考 Android 端的 WebView 渲染也 OK 。

3 鸣谢

感谢公司小伙伴: 赟赟小姐姐俊俊小哥哥 给予我的在 H5 与 iOS 上的帮助。

使用到的开源库,٩(๑ᵒ̴̶̷͈᷄ᗨᵒ̴̶̷͈᷅)و棒棒哒

flutter 部分:

  • fish_redux:阿里闲鱼出品,WReader 将其用于状态管理有点少哦,IDEA 的模板生成插件该更新了哦
  • fluro:WReader中用于 Route 管理。
  • intl:标准化的库,我主要用来格式化日期。
  • json_annotation 、convert 、build_runner 与 json_serializable :JSON 序列化。
  • flutter_i18n:国际化
  • sqflite:数据库操作。

Android 部分:

  • JGit:git 的Java 实现,WReader 的核心功能依赖库。
  • glide:图片浏览库。
  • slf4j-nop:JGit 依赖的日志库。
  • PhotoView:提供图片浏览手势浏览的库。
  • gson:JSON 序列化。
  • com.amitshekhar.android:debug-db:数据库调试库。

Html 部分:

  • strapdown:md 文件的渲染 js 库,核心依赖库。
  • jquery:jquery 。
  • bootstrap:用到 bootstrap 网站的美化 css 。

iOS 部分:

  • FMDB:SQLite 读写
  • WHToast:toast

还有一些遗漏的库与热心老哥的分享文章,再次感谢!。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值