天天看點

Kotlin 實踐項目(密碼本)

Google 推出

Kotlin

作為

Android

的官方語言已經有一段時間,最近用工作上一些閑暇時間做了個項目,切身體驗下。

一、需求描述

一直以來對各個網站的密碼管理都比較頭疼,因為擔心“撞庫”,所有網站密碼都不相同。注冊網站時都會随便寫一個密碼,卻沒有一個好的密碼管理工具,下次登入時基本都需要找回密碼,結果又忘記如此反複。對于普通的網站重新找回一次并不算複雜,但是對于像 QQ、微信、支付寶 這樣有比較高安全驗證的網站找回起來并不容易,處理起來很繁瑣特别頭疼(承認我記憶力不好,突然想到自己好幾張銀行卡密碼也忘記了 ( ̄▽ ̄)~~~ ,不過也沒存款。。。。。。)

之前找過管理密碼的軟體,但不是太放心。軟體又沒開源,也不确定有沒有後門或漏洞,自己動手要踏實得多。

我的《密碼本》正是基于這一需求産生的,不但讓自己的密碼相對有一個保障,同時練練手學習新的技術。最後該項目作為開源項目,希望也能幫助你解決同樣的煩惱。

二、項目截圖

GitHub: https://github.com/iOnesmile/PasswordNotebook

安裝包: 百度雲下載下傳

Kotlin 實踐項目(密碼本)

三、待完善

  • 提升加密檔案安全度,研究其它算法并檢驗安全性
  • 應用内安全驗證,如資料存儲、鎖屏、頁面逾時、導出權限等
  • 優化互動體驗,簡化操作流程,和指紋解鎖等驗證機制
  • 其它平台開發(iOS、Windows、MacOS),資訊同步
  • 語言國際化
  • 其它……
如果有什麼好的想法和建議,或在使用中遇到什麼問題,歡迎回報,我們一起完善吧!!!

四、使用 Kotlin 的坑或技術總結

  1. 在設定監聽時,提示錯誤

    Expected a value of type Boolean

    原因:該監聽有一個傳回值,類型是

    Boolean

    例如:
    textView.onLongClick {
        // TODO
        return@onLongClick true
    }
               
  2. EditText 設定值時提示

    Type mismatch. Required: Editable! Found: String

    原因:要給

    EditText

    設定

    String

    類型的值時,需要使用

    setText()

    方法

    例如:

    editText.setText("XXX")
               
  3. 函數式程式設計
    • 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