ZXing源碼解析一:讓源碼跑起來

前言:由於公司用的掃碼庫是ZXing,可是在使用的時候發現存在一些問題,因此就想分析一下源碼,搞清楚ZXing解析二維碼的原理和步驟,而後再進一步對ZXing進行一些優化。java

下載源碼

  ZXing庫是開源的,能夠直接在github下載源碼閱讀,源碼地址在這裏,能夠用git命令將源碼clone道本地,如圖 android

用命令下載源碼
從上圖中能夠發現源碼有200多兆,固然這兩百多兆不只有源碼,還有一些文檔什麼的。源碼下載完成後,會有如下的目錄,如圖
源碼包含的目錄
這裏就稱一個文件夾爲一個模塊,各個模塊的描述以下表

模塊 描述
core 圖像解碼庫和測試代碼
javase JavaSE的客戶端代碼
android Android客戶端的源碼
android-integration 簡化Intent與Android客戶端集成
android-core 配置Android攝像頭
zxingorg 在線解析二維碼
zxing.appspot.com 在線生成二維碼
docs 介紹ZXing項目的文檔

運行源碼

  源碼下載下來後的工做就是導入Android Studio中來跑下,看下源碼運行的效果,從下載下來的模塊來看,這裏與Android有關的代碼應該是在androidandroidcorecore模塊中,這裏的android模塊Android客戶端的源碼,可是要想成功運行源碼,還須要將androidandroidcore做爲其依賴庫。具體的操做方法以下git

  1. File-->New-->ImportModule 將android模塊導入項目。
  2. File-->New-->NewModule在跳出的界面選擇AndroidLibrary,修更名稱後點擊Finish便可生成一個ModlueLibrary,而後,將生成的Library中Java目錄下的文件刪除,將Zxing中的core文件夾下的Java目錄下的文件拷貝過來,最後,將此模塊設爲android模塊的依賴。
  3. 用和步驟2同樣的方法,導入androidcore模塊。

以上操做完成後,項目的結構應該以下圖所示 github

這時還須要解決幾個問題,代碼才能運行起來,步驟以下 app

  1. android模塊下的AndroidManifest.xml中的
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="22"/>
複製代碼

這行代碼刪除。測試

  1. HistoryItemAdapter.java的構造方法中的代碼修改成
HistoryItemAdapter(Context activity) {
    super(activity, R.layout.history_list_item, new ArrayList<HistoryItem>());
    this.activity = activity;
  }
複製代碼
  1. RSSExpandedReader.java中的這句代碼
ps = checkRows(new ArrayList<>(), 0);
複製代碼

修改成優化

ps = checkRows(new ArrayList<ExpandedRow>(), 0);
複製代碼

將上面幾處修改完成,此時項目就能跑起來了,不過這時跑起來的項目是橫屏的,只要在AndroidManifest.xml修改如下Acticity的配置就能將橫屏切換成豎屏了。this

結束語

  本篇主要講述了怎樣下載及運行項目,只有將項目運行起來,才能方便的調試,經過調試才能很好的理解其中的原理及解析源碼的步驟。能夠發現如今運行的項目其中有好多功能對咱們來講都是多餘的,下篇咱們將刪除多餘的功能並開始分析源碼,瞭解整個解碼的步驟。spa

本文已由公衆號「AndroidShared」首發調試

歡迎關注個人公衆號
掃碼關注公衆號,回覆「獲取資料」有驚喜
相關文章
相關標籤/搜索