本文首發於簡書 http://www.jianshu.com/u/d614825bc8a1
基於Google ZXing 3.3.0穩定版分析,基本的流程講解。會涉及如何編寫基於ZXing庫的APK; 如何修改源碼定製自己的掃面界面。
Google ZXing介紹
Google ZXing介紹
簡單理解, ZXing支持各種條形碼,二維碼掃描,由多個模塊組成, 而且支持PC端,移動端。
本系列,關注的是如何在Android手機中使用ZXing庫, 重點關注,core
, android
, android-core
。
Google ZXing 先睹爲快
github上ZXing沒有提供apk下載,需要google play,將android目錄導入Android Studio編程完成如下apk。
百度網盤 google-zxing apk
Google ZXing 源碼導入
ZXing項目使用Maven管理,編譯, 沒有使用Android Studio工具, 要想快速導入AS(Android Studio下同), 稍微麻煩點。如果你順手Maven,直接查看 Getting Started Developing 步驟。
接下來,介紹導入AS過程。
ZXing目錄結構
在ZXing介紹那一節,已經展示ZXing想的目錄結構。
ZXing 常用庫
Android使用的有: core
, android
, android-core
, android-integration
ZXing源碼導入
以導入android
目錄爲例講解,如何在AS中使用ZXing核心庫。其中android
是官方提供的demo, 通過該Demo熟悉如何集成ZXing核心庫。
使用jar包形式
git clone源碼或者直接下載 zxing-3.3.0 解壓後,目錄內容如下:
在AS導入界面,選擇導入選項,進入android
目錄,連續next後,官方Demo就導入到AS中。
這裏需要注意下載zxing目錄和導入到AS workspace不能是同一個文件夾,否則會出現錯誤。
已經說明,ZXing核心是core
, android-core
, 而android
是提供的Demo,上述導入目的是想快速運行該Demo而已。現在,還編譯不過,因爲缺少zxing 核心庫,以及android核心庫。
解決方法
- 1 下載core-3.3.0.jar包 http://repo1.maven.org/maven2/com/google/zxing/core/3.3.0/core-3.3.0.jar
- 2 AS導入工程中的app目錄下新建libs目錄(默認沒有), 將core-3.3.0.jar 拷貝進入。
- 3 選中core-3.3.0.jar右鍵,選擇
Add As Library...
將jar包添加到依賴中 - 4 再次編譯,查看結果,還是會有問題。
這種方式會在app目錄中對應的build.gradle 增加一行 。
compile files('libs/core-3.3.0.jar')
如上運行還是有錯誤, 提示:
沒有導入android-core
, 從zxing源碼中zxing\android-core\src\main\java\com\google\zxing\client\android\camera
拷貝 CameraConfigurationUtils.java
到
- 5 再次編譯,成功生成apk,小米5手機測試OK。
以上方法甚是覺得累贅,因爲我們需要的是zxing核心庫core
,android-core
, 庫的開發者肯定已經放在了AS對應的倉庫中了,接下來只要很簡單的 添加2個依賴就可以把該Demo所需的依賴庫下載,爲我所用。
請看,下面的步驟。
ZXing依賴庫導入
大家對build.gradle
肯定不陌生,就是AS項目的配置文件,既然Demo需要依賴zxing核心庫,步驟如下:
- AS工程目錄app下的build.gradle 添加 依賴
dependencies {
compile 'com.google.zxing:core:3.3.0';
compile 'com.google.zxing:android-core:3.3.0';
}
爲什麼知道是這些,簡單。ZXing使用Maven來管理的,所以每個目錄會有個pom.xml文件。找到zxing源碼根目錄下的pom.xml
文件, 搜索關鍵字 android-core
, core
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>${zxing.version}</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>android-core</artifactId>
<version>${zxing.version}</version>
</dependency>
再結合上述AS的依賴,一看就知道 compile '組織名稱:製品名稱:版本號';
小結
以上所有步驟小結爲
- git clone 或者 下載zxing-3.3.0源碼,將其中android目錄導入AS
- 添加依賴
- 編譯apk
不建議下載zxing 核心庫源碼,自己編譯成jar包,理由很簡單,沒必要!
- 因爲常用場景不會去改動core核心庫,裏面基本是算法相關。
- 徒勞新增了Demo的文件量