1 WReader
一個(gè)功能簡(jiǎn)單、頁面簡(jiǎn)陋、卻又實(shí)用的帶 Git 只讀功能的閱讀器悲关。提供私有 Git 倉庫克隆,分支娄柳、標(biāo)簽檢出與切換等功能寓辱,主要用于閱讀 Markdown 筆記與其它文件(支持導(dǎo)出與其它 App 打開)。
支持 Github 赤拒、GitLab讶舰、Gitblit 或其他 Git 裸倉庫等私有倉庫的 Clone ,鑒權(quán)信息僅保存在本地?cái)?shù)據(jù)庫需了,僅在 Clone 跳昼、Pull 與 Fetch 使用到。支持 https://xxx.git
肋乍、ssh://xxx.git
鹅颊、 git@xxx.git
等格式(可使用 https://gitee.com/tea_too_tea_too/WReaderDemo.git
該倉庫進(jìn)行測(cè)試,該倉庫是 public 倉庫墓造,無需鑒權(quán)信息)堪伍。
Github 地址 :https://github.com/Bottlezn/wreader
gitee 倉庫地址,我會(huì)定期更新的 : https://gitee.com/tea_too_tea_too/wreader
最新 Release 版本下載地址:
1.1 功能圖示
-
克隆觅闽、瀏覽
克隆瀏覽
-
最近閱讀與設(shè)置頁面
最近閱讀設(shè)置
1.2 功能列表
- 從遠(yuǎn)程 Git 倉庫中 Clone 項(xiàng)目到本地帝雇,支持使用密鑰對(duì)與賬戶密碼檢出,v0.4 版本之后支持
https://
協(xié)議無鑒權(quán)信息檢出蛉拙,一次 Clone 之后無需在輸入鑒權(quán)信息( 可使用https://gitee.com/tea_too_tea_too/WReaderDemo.git
該倉庫進(jìn)行測(cè)試尸闸,該倉庫是 public 倉庫,無需鑒權(quán)信息。 )吮廉。 - 從 Remote 中檢出 Branch 或者 tag 到本地 Branch苞尝,切換本地分支時(shí)不需要網(wǎng)絡(luò),因?yàn)?WReader 不會(huì)自動(dòng)幫你 Pull宦芦。
- 自由 Pull 那些從 遠(yuǎn)程 Branch 中檢出的本地 Branch 宙址,tag 行不通哦。同時(shí)帶有 Fetch 功能调卑。
- 支持亮暗模式自由切換抡砂,無論是在設(shè)置頁面還是閱讀頁面都可全局切換亮暗模式。
- 自動(dòng)轉(zhuǎn)換倉庫中的本地圖片恬涧,筆記中的圖片不需要在帶有一個(gè)外網(wǎng)地址啦注益。
- 使用 strapdown JS 庫與 bootstrap CSS 主題提供較為美觀的閱讀體驗(yàn)。
- 提供最近閱讀功能气破,在倉庫文件列表與閱讀記錄中均帶有搜索功能聊浅。
- 也可長(zhǎng)按文件使用手機(jī)自帶 App 打開文件,同時(shí)也支持導(dǎo)出文件哦现使。 導(dǎo)出后會(huì)提示導(dǎo)出目錄低匙。
- 還提供 國(guó)際化環(huán)境切換 、 無效倉庫清除 碳锈、 配置文件導(dǎo)入 等功能顽冶。
- 不提供本地編輯功能哦。
1.3 快速使用
建議使用 json 文件導(dǎo)入的方式來 Clone 項(xiàng)目售碳。
- 密鑰對(duì)導(dǎo)入格式:
authenticationWay
是的值為2强重,priKey
,pubKey
和priKeyPassword
使用 Base64 編碼。其中priKey
必須是BEGIN RSA PRIVATE KEY
開頭的贸人,不要使用BEGIN OPENSSH PRIVATE KEY
開頭的间景,WReader 依賴的 JSCH 庫不支持該格式。{ "gitUri":"git倉庫的uri艺智,支持git與http協(xié)議", "targetDir":"clone倉庫的目錄名稱倘要,就是`git clone git@xxx targetDir`中的dir∈穑可以不填寫封拧,使用默認(rèn)值", "authenticationWay":2, "priKey":"使用Base64編碼過的私鑰字符串內(nèi)容,必須是這個(gè)`BEGIN RSA PRIVATE KEY`開頭的", "pubKey":"使用Base64編碼過的公鑰字符串內(nèi)容", "priKeyPassword":"使用Base64編碼過的私鑰密碼夭问,私鑰沒有加密的話傳空即可" }
- 賬號(hào)密碼導(dǎo)入格式:
authenticationWay
是的值為1泽西。{ "gitUri":"git倉庫的uri,支持git與http協(xié)議", "targetDir":"clone倉庫的目錄名稱缰趋,就是`git clone git@xxx targetDir`中的dir捧杉∩录可以不填寫,使用默認(rèn)值", "authenticationWay":1, "account": "使用Base64編碼過的賬號(hào)", "pwd": "使用Base64編碼過的密碼內(nèi)容" }
1.4 注意事項(xiàng)
- WReader 暫不支持 iOS 設(shè)備糠溜。因?yàn)楸救酥饕?Android 開發(fā)淳玩,最近學(xué)了幾天 iOS 發(fā)現(xiàn)搞不定 Objective-Git 的導(dǎo)入與使用直撤。所以源碼中的 WReaderHostiOS 只是一個(gè)集成了 Flutter Module 的空架子非竿。有興趣的朋友可以一起參與哦,算是拋磚引玉吧谋竖。之后我打算在業(yè)余時(shí)間努力研究一下 Flutter 調(diào)用 C 庫 libgit2 的方法红柱,爭(zhēng)取在 Android&iOS 雙端或更多端中用 Native 代碼來實(shí)現(xiàn) Git 的功能。
- 本 App 是本人自發(fā)需求蓖乘,自己設(shè)計(jì)功能與 UI 锤悄、并自我測(cè)試的一個(gè) App 。如有幸有很多朋友使用嘉抒,那在這過程中肯定會(huì)有很多問題出現(xiàn)零聚。在 App 的設(shè)置頁面有日志收集功能,大家遇到問題可以其到該頁面找找看些侍。
- 其他尚未發(fā)現(xiàn)的問題隶症,歡迎評(píng)論指出。我的郵箱:
wdu_udw@163.com
岗宣。 - 如果你喜歡 WReader 蚂会,歡迎點(diǎn)贊評(píng)論支持哦。
2 項(xiàng)目引入
- Clone 項(xiàng)目:
git clone git@github.com:Bottlezn/wreader.git
- 目前 v0.1 版本的 tag 是
v0.1
耗式。切換到該 tag胁住,git chekout -b fromTag/v0.1 v0.1
- 假設(shè)根路徑是
$ROOT_DIR
,cd $ROOT_DIR/wreader_flutter_module
,在 terminal 中運(yùn)行flutter pub get flutter create .
- Android 項(xiàng)目
WReaderHostAndroid
直接使用 AndroidStudio 打開即可刊咳。 - iOS 項(xiàng)目
WReaderHostiOS
需要在WReaderHostiOS
目錄下運(yùn)行pod install
之后再打開彪见,我的 XCode 版本是 11 。
2.1 大概設(shè)計(jì)思路
WReader 是我在業(yè)余時(shí)間一點(diǎn)點(diǎn)設(shè)計(jì)娱挨、開發(fā)出來的:
- 絕大部分頁面都是使用 Flutter 開發(fā)實(shí)現(xiàn)余指,下文不說明的頁面均是 Flutter 頁面。
- 閱讀筆記 與 圖片瀏覽 頁面是使用 Android 原生開發(fā)的让蕾。另外 Android 端的 Git 功能是使用 JGit 庫浪规。
- Markdown 文件的解析使用 WebView 加載本地 Html 并搭配 strapdown.js ,將 Markdown 文件解析為 Html格式探孝,再使用 bootstrap 與 jQuery 等 js 庫 與 css 來渲染笋婿。
- iOS 端建議使用 Objective-Git 或者 libgit2 庫來實(shí)現(xiàn)的 iOS 端的 Git 功能,關(guān)于筆記方面參考 Android 端的 WebView 渲染也 OK 顿颅。
3 鳴謝
感謝公司小伙伴: 赟赟小姐姐 與 俊俊小哥哥 給予我的在 H5 與 iOS 上的幫助缸濒。
使用到的開源庫,?(??????????????)?棒棒噠
:
flutter 部分:
- fish_redux:阿里閑魚出品,WReader 將其用于狀態(tài)管理文檔有點(diǎn)少哦庇配,IDEA 的模板生成插件該更新了哦斩跌。
- fluro:WReader中用于 Route 管理。
- intl:標(biāo)準(zhǔn)化的庫捞慌,我主要用來格式化日期耀鸦。
- json_annotation 、convert 啸澡、build_runner 與 json_serializable :JSON 序列化袖订。
- flutter_i18n:國(guó)際化
- sqflite:數(shù)據(jù)庫操作。
Android 部分:
- JGit:git 的Java 實(shí)現(xiàn)嗅虏,WReader 的核心功能依賴庫洛姑。
- glide:圖片瀏覽庫。
- slf4j-nop:JGit 依賴的日志庫皮服。
- PhotoView:提供圖片瀏覽手勢(shì)瀏覽的庫楞艾。
- gson:JSON 序列化。
- com.amitshekhar.android:debug-db:數(shù)據(jù)庫調(diào)試庫龄广。
Html 部分:
- strapdown:md 文件的渲染 js 庫硫眯,核心依賴庫。
- jquery:jquery 蜀细。
- bootstrap:用到 bootstrap 網(wǎng)站的美化 css 舟铜。
iOS 部分:
- FMDB:SQLite 讀寫
- WHToast:toast
還有一些遺漏的庫與熱心老哥的分享文章,再次感謝奠衔!谆刨。