基于Google ZXing 3.3.0穩(wěn)定版分析,基本的流程講解。會涉及如何編寫基于ZXing庫的APK; 如何修改源碼定制自己的掃面界面。
Google ZXing介紹
Google ZXing介紹
簡單理解, ZXing支持各種條形碼,二維碼掃描,由多個模塊組成, 而且支持PC端,移動端。

本系列,關(guān)注的是如何在Android手機中使用ZXing庫, 重點關(guān)注,
core, android, android-core。
Google ZXing 先睹為快
github上ZXing沒有提供apk下載,需要google play,將android目錄導(dǎo)入Android Studio編程完成如下apk。
百度網(wǎng)盤 google-zxing apk
Google ZXing 源碼導(dǎo)入
ZXing項目使用Maven管理,編譯, 沒有使用Android Studio工具, 要想快速導(dǎo)入AS(Android Studio下同), 稍微麻煩點。如果你順手Maven,直接查看 Getting Started Developing 步驟。
接下來,介紹導(dǎo)入AS過程。
ZXing目錄結(jié)構(gòu)
在ZXing介紹那一節(jié),已經(jīng)展示ZXing想的目錄結(jié)構(gòu)。

ZXing 常用庫
Android使用的有: core, android, android-core, android-integration
ZXing源碼導(dǎo)入
以導(dǎo)入android目錄為例講解,如何在AS中使用ZXing核心庫。其中android是官方提供的demo, 通過該Demo熟悉如何集成ZXing核心庫。
使用jar包形式
git clone源碼或者直接下載 zxing-3.3.0 解壓后,目錄內(nèi)容如下:

在AS導(dǎo)入界面,選擇導(dǎo)入選項,進(jìn)入android目錄,連續(xù)next后,官方Demo就導(dǎo)入到AS中。

這里需要注意下載zxing目錄和導(dǎo)入到AS workspace不能是同一個文件夾,否則會出現(xiàn)錯誤。
已經(jīng)說明,ZXing核心是core, android-core, 而android是提供的Demo,上述導(dǎo)入目的是想快速運行該Demo而已。現(xiàn)在,還編譯不過,因為缺少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導(dǎo)入工程中的app目錄下新建libs目錄(默認(rèn)沒有), 將core-3.3.0.jar 拷貝進(jìn)入。
- 3 選中core-3.3.0.jar右鍵,選擇
Add As Library...將jar包添加到依賴中 - 4 再次編譯,查看結(jié)果,還是會有問題。

這種方式會在app目錄中對應(yīng)的build.gradle 增加一行 。
compile files('libs/core-3.3.0.jar')
如上運行還是有錯誤, 提示:

沒有導(dǎo)入
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, 庫的開發(fā)者肯定已經(jīng)放在了AS對應(yīng)的倉庫中了,接下來只要很簡單的 添加2個依賴就可以把該Demo所需的依賴庫下載,為我所用。
請看,下面的步驟。
ZXing依賴庫導(dǎo)入
大家對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文件, 搜索關(guān)鍵字 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>
再結(jié)合上述AS的依賴,一看就知道 compile '組織名稱:制品名稱:版本號';
小結(jié)
以上所有步驟小結(jié)為
- git clone 或者 下載zxing-3.3.0源碼,將其中android目錄導(dǎo)入AS
- 添加依賴
- 編譯apk
不建議下載zxing 核心庫源碼,自己編譯成jar包,理由很簡單,沒必要!
- 因為常用場景不會去改動core核心庫,里面基本是算法相關(guān)。
- 徒勞新增了Demo的文件量