AndroidStudio导入Zxing Android项目

GitHub地址:https://github.com/zxing/zxing
参考博客:https://blog.csdn.net/qq_34902522/column/info/28769
步骤:

1、下载项目,可以直接在Github下载该项目,下载完成后项目的目录结构如下,我们只关注android部分的即可。
zxing项目目录.png

2、导入,在AndroidStudio中 File ==> New ==> Import module,选择目录下的android项目即可,等待带入完成。为了辨识这部分功能 命名为zxing。将这个项目作为一个库而不是一个独立的项目,在build.gradle中将apply plugin: ‘com.android.application’ 改为 apply plugin: ‘com.android.library’

同时需要导入依赖,这里依赖的zxing库,直接在导入依赖页面搜索zxing导入的,因为这个项目是基于zxing库的;如果不导入依赖,则可以直接在libs目录下添加 jar文件作为库文件,jar文件下载地址:https://github.com/zxing/zxing/releases,有不同的版本,根据需要下载(一般下载最新版),添加完成后,点击右键,add As Library。

修改后,如下图:
image.png

3、在项目中引入。右击项目==> Open Module Settings
image.png

导入之后,会提示引入失败,
image.png

删除AndroidManifest.xml中的红框内的东西,作为库文件,不能有启动图标和启动页面
image.png

Make Project 会出现
image.png

在对应的文件内把switch语句全部转换为if语句就可以了。(具体为什么不能使用switch语句,请看:https://blog.csdn.net/wang295689649/article/details/74935867)

对比普通工程和Library工程的R文件发现,Library工程的R文件常量缺少final。
由于Library工程的可以包含资源文件,编译会生成R文件,多个Library中可能出现id冲突的问题。为了解决这个问题谷歌将Library工程R文件才从静态常量变为非常量。
然而switch语句的case中 必须是常量,而此时的R.id.xxx为非常量,所以报错了。

全部完成后,会发现缺少CameraConfigurationUtils这个文件,在android-core文件夹下,对,一直点进去,就能找到这个文件,然后复制到你的项目下面。

至此,已经完成了项目的导入。在自己的应用中启动CaptureActivity就可以进行扫描了,另外注意,Android6.0的动态权限申请,需要请求相机权限才可正常使用。OK,导入成功。