Google 推出 Kotlin
作爲 Android
的官方語言已經有一段時間,最近用工作上一些閒暇時間做了個項目,切身體驗下。
一、需求描述
一直以來對各個網站的密碼管理都比較頭疼,因爲擔心“撞庫”,所有網站密碼都不相同。註冊網站時都會隨便寫一個密碼,卻沒有一個好的密碼管理工具,下次登錄時基本都需要找回密碼,結果又忘記如此反覆。對於普通的網站重新找回一次並不算複雜,但是對於像 QQ、微信、支付寶 這樣有比較高安全驗證的網站找回起來並不容易,處理起來很繁瑣特別頭疼(承認我記憶力不好,突然想到自己好幾張銀行卡密碼也忘記了 ( ̄▽ ̄)~~~ ,不過也沒存款。。。。。。)
之前找過管理密碼的軟件,但不是太放心。軟件又沒開源,也不確定有沒有後門或漏洞,自己動手要踏實得多。
我的《密碼本》正是基於這一需求產生的,不但讓自己的密碼相對有一個保障,同時練練手學習新的技術。最後該項目作爲開源項目,希望也能幫助你解決同樣的煩惱。
二、項目截圖
GitHub: https://github.com/iOnesmile/PasswordNotebook
安裝包: 百度雲下載
三、待完善
- 提升加密文件安全度,研究其它算法並檢驗安全性
- 應用內安全驗證,如數據存儲、鎖屏、頁面超時、導出權限等
- 優化交互體驗,簡化操作流程,和指紋解鎖等驗證機制
- 其它平臺開發(iOS、Windows、MacOS),信息同步
- 語言國際化
- 其它……
如果有什麼好的想法和建議,或在使用中遇到什麼問題,歡迎反饋,我們一起完善吧!!!
四、使用 Kotlin 的坑或技術總結
在設置監聽時,提示錯誤
Expected a value of type Boolean
原因:該監聽有一個返回值,類型是Boolean
例如:textView.onLongClick { // TODO return@onLongClick true }
EditText 設置值時提示
Type mismatch. Required: Editable! Found: String
原因:要給EditText
設置String
類型的值時,需要使用setText()
方法
例如:editText.setText("XXX")
-
map
映射函數也是一個高階函數,將一個集合經過一個傳入的變換函數映射成另外一種集合filter
篩選函數將用戶給定的布爾邏輯作用於集合,返回由原集合中符合條件的元素組合的一個子集reduce
歸納函數將一個數據集合的所有元素通過傳入的操作函數實現數據集合的積累疊加效果
五、使用技術/庫
- Kotlin 語言(目前小部分是 Java)
- Realm 數據庫
- DES 加密,BASE64 編碼
- Toolbar
- Preference 設置
- recyclerview-swipe 側滑
- exfilepicker 文件選擇
- lockpattern 九宮格鎖屏
- simpleRatingbar 星級評分條
- Gson 解析庫
- 應用內圖標來源 https://github.com/google/material-design-icons
- 應用圖標來源 http://www.iconfont.cn