网站维护怎么收费,海尔商城网站建设维护,专业关键词优化平台,查建设工程规划许可证在哪个网站这两天想要实现一个能扫码的app#xff0c;找了一下#xff0c;发现zxing用的比较多#xff0c;就在网上找了找怎么用zxing。我主要是按照宇宝守护神的博文“Android 二维码的扫码功能实现#xff08;一#xff09;”的步骤完成的#xff0c;博文链接在此#xff1a;htt…这两天想要实现一个能扫码的app找了一下发现zxing用的比较多就在网上找了找怎么用zxing。我主要是按照宇宝守护神的博文“Android 二维码的扫码功能实现一”的步骤完成的博文链接在此https://blog.csdn.net/qq_34902522/article/details/78384661
但是这个博文的时间比较早2017年的所以在按照他的步骤实现过程中我遇到了非常非常多原作者没有遇见的坑在这里我完整的把我的过程记录下来真的是血泪史啊~
zxing开源项目的地址https://github.com/zxing/zxing/releases把zxing项目下载下来。
1. 在Android Studio中新建一个空白项目。
2. 在新建项目中file→new→import Module将下载好的zxing项目作为module导入进来注意选择android这个文件夹。然后next→finish。这里面可以按照自己的需要给module取名默认的“android”也是可以的。 3. 我们可以看到导进来之后project中出现了一个名为“android”的文件夹 同时也出现了我们遇到的第一个bug提示“The minSdk version should not be declared in the android manifest file. You can move the version from the manifest to the defaultConfig in the build.gradle file.” 根据提示打开android新导入的module名→src→main→AndroidMainfest.xml里面定义了一句
uses-sdk android:minSdkVersion19 android:targetSdkVersion22/
把它删掉就好了。重新Sync整个项目就没有问题了。
4. 导入的步骤还没有做完打开新导入库我这里是android的build.gradle① 把apply plugin: ‘com.android.application’语句改成apply plugin: ‘com.android.library,② 删掉applicationId “com.google.zxing.client.android”③ 添加
dependencies{implementation com.google.zxing:android-core:3.3.0implementation com.google.zxing:core:3.3.3implementation com.google.zxing:android-integration:3.3.0
}上面添加的代码段中解决了第一个坑core版本要选3.3.3的因为在3.3.0版本中会缺少一些我们扫码过程中必须要用的函数比如说getStartTimestamp、getEndTimestamp等宇宝守护神也遇到了这个问题但是他通过暴力地把函数改了来解决这个问题可惜我不只有这个问题还有暴力不能解决的。寻找问题的方法下面这个链接里面有各个版本的jar包下载下来通过jd-gui将jar包反编译就可以发现其中的差别通过查找自己缺失的函数来确定使用哪个版本的jar包。
https://repo1.maven.org/maven2/com/google/zxing/
5. 继续引库。右键项目Open Module Settings→打开窗口中左边选择application moduleapp右边选dependencies→点绿色加号→Module dependency→:android→OKOK. 6.Sync后又一个意外之喜来了提示错误“java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs”。接下来我们要看看是什么情况。点击左下角Terminal输入
gradlew compileDebugSource --stacktrace -info
Terminal里面输出了很多乱七八糟的东西往上翻翻看到了error了。部分如下 打开看之后发现是所有switch-case出错了查找资料发现改成if-else格式就可以了。接下来就是改了按照提示找到对应的文件下面把所有报错的地方的switch-case改成if-else。
7.再Sync当当当当有一个bug来啦如下 提示说Manifest文件出问题了那就去看看Androidmanifest.xml打开这个文件后点击下图左下角Merged Manifest就可以在下图右边的框框里面看到error信息了。 根据提示删除androidAndroidManifest.xml中的
android:icondrawable/launcher_icon
然后按照错误提示修改一下代码里面sdk的版本或者直接点一下提示里面给的建议好像会直接帮修改好轻松快乐。
8. 再Sync终于没有错了。下面可以跑教程博客里面给出的代码了代码在上述链接里面有给这里就不再粘了。还有几个bug需要我们去修改。
第一个问题提示没有下面两个类。我的解决非常暴力直接在下载的zxing文件里面搜索找到IntentIntegrator.java和IntentResult.java把它们复制到MainActivity文件夹下面这样就不需要import了直接把这两句话删了。 复制过来之后project中就变成了下图这样 但是需要注意的是我们要打开把IntentIntegrator.java和IntentResult.java开头的那个packet名给改了MainActivity里面是啥样这俩就改成啥样。
还有一个小地方直接复制过来的话会有如下这个错误 我们需要在layout文件夹下面的activity_main.xml中添加button的布局控件下面这段代码作为一个小样例放在这里。 Buttonandroid:idid/scannerandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:text扫码/
到这一步我们基本上解决了所有bug下面就可以轻松愉快地真机调试开始我们的第一步啦。