【招标报名源码】【耳萌软件源码】【小米3平板源码】zxingjar源码解析

来源:微信项目源码

1.android导入第三方jar包报错 如何正确导入jar包
2.Java之使用zxing.jar包生成二维码
3.Zxing Zbar 结合真正的源码极速秒扫
4.android项目中加入zxing,混淆打包出错,求解决

zxingjar源码解析

android导入第三方jar包报错 如何正确导入jar包

       在android上导入zxing.jar包,解析总是源码报错:Could not find class 'com.google.zxing.MultiFormatWriter', referenced from method com.changyang.app.util.Encode2dUtil.creat2DCode后来找到了解决方法:在adt 的版本之前,导入第三方jar包时要建立一个lib目录,解析并 add to buiild path。源码在adt的解析招标报名源码版本之后,导入第三方jar包,源码要建立一个libs目录,解析不能使用lib命名,源码adt会自动将jar依赖。解析不用手动添加了。源码

Java之使用zxing.jar包生成二维码

       在数字化时代的解析日新月异中,二维码已经渗透到生活的源码方方面面,其在软件开发中扮演着重要角色。解析本文将向你展示如何利用zxing.jar库轻松生成二维码,源码让你的项目具备这一实用功能。

       首先,我们来看一个实际场景:许多平台都内置了二维码生成功能。要实现这个功能,耳萌软件源码我们需要进行一些基础设置。以下是关键步骤:

       1. 准备工作

       为了集成zxing.jar,你需要在Maven项目中进行以下操作:

       在<pom.xml文件中添加zxing的依赖,确保项目能够引用所需的库。

       接下来,我们创建一个测试类来演示二维码的生成和处理过程。在名为TestController的类中,我们将编写核心代码。

       2. 测试二维码功能

       启动项目后,小米3平板源码你可以通过调用我们编写的测试接口来生成和查看二维码。这个过程通常涉及到API调用和数据编码,但具体实现细节取决于你的项目结构和配置。

Zxing Zbar 结合真正的极速秒扫

       二维码扫描功能在APP开发中不可或缺,但市面上的现成Demo往往存在各种bug,如预览变形、图像拉伸、识别速度慢等问题。为了提供更稳定高效的外滩源码头英文体验,我们决定自建扫描功能。最初考虑使用ZXing进行相机预览,配合ZBar解码,理论上速度会有所提升,但实际操作中,遇到多个问题。

       在整合ZXing与ZBar时,我们发现将数据进行旋转以适应竖屏扫描变得困难,因为ZXing不支持横向扫描二维码。创意编程源码画板经过分析,发现旋转数据的代码在RedMi 3手机上的执行时间约为ms,导致竖屏扫描速度明显减慢。为解决此问题,我们采取了以下步骤:

       首先,编译ZXing,使用Maven构建项目,确保环境配置正确,将生成的jar包复制到ZXing项目的Android目录中。

       接着,优化ZXing以支持竖屏扫描。修改CameraManager类的getFramingRect()方法,调整扫描框尺寸为正方形。在DecodeHandler类的decode方法中,加入代码进行相机数据旋转。通过这些优化,扫描功能在竖屏下得以实现,但速度仍然较慢。

       为了进一步提升解码速度,我们使用C语言编写数组转换函数,编译成SO库,替换掉解码方法中的数组转换过程。此优化使得速度提升近倍,解决了解码速度慢的问题。

       此外,我们还提供选择模式,用户可根据需求在兼容模式(使用ZXing解码)和高速模式(使用Zbar解码)之间切换,以兼容不同功能需求。经过上述优化和整合,我们成功实现了快速、稳定的二维码扫描功能,满足了用户对于扫描效率和体验的高要求。

android项目中加入zxing,混淆打包出错,求解决

       写在视图xml中的onClick响应出错. 因为写在xml中的onClick是通过反射调用的, proguard认为它们没有在代码中被调用过, 所以将它们从代码中除掉或改名了. 解决方法:

       在proguard.cfg中添加以下代码, 就可以防止被配在视图xml中的onClick方法被proguard优化掉

       -keepclassmembers class * extends android.app.Activity {

       public void *(android.view.View);

       }

       jni反调Java方法

       这些类或方法同样可能会被proguard认为没有调用过而被除掉, 或都被改名. 这些方法最好统一写在一个类中, 然后这个类不作优化, 或是找出所有jni调用过的类与方法, 在proguard.cfg中配置, 不对它们作优化

       其它反射调用的java类与方法

       使用反射时一定要注意proguard可能会认为那些方法未被调用过, 会在代码优化过程中将它们改名或除去. 在使用反射的地方一定要在proguard.cfg中配置, 不优化反射调用过的类和方法

       最后在proguard优化过后会产生一些文件

       dump.txt – 描述.apk文件中所有类文件间的内部结构

       mapping.txt – 列出了原始的类,方法和字段名与混淆后代码间的映射。这个文件很重要,当你从release版本中收到一个bug报告时,可以用它来翻译被混淆的代码。

       seeds.txt – 列出了未被混淆的类和成员

       usage.txt – 列出了从.apk中删除的代码

       要注意分析mapping.txt与usage.txt看xml视图中写的onClick响应函数, jni调用到的java类与方法, 反射调用过的类与方法是否被混淆或重命名

       -keep class com.badlogic.gdx.backends.Android.**{ *;}

       的只是不混淆:这个包下的类(不包括子包里的东西),用到一个第三文的类就要把这个类所在的包,像上面加上

       还要注意的是android-support-v4.jar这个包问题,这里加上了对这个jar包的处理

       第三方jar的混淆,

       -optimizationpasses 5

       -dontusemixedcaseclassnames

       -dontskipnonpubliclibraryclasses

       -dontpreverify

       -verbose

       -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

       -keep public class * extends android.app.Activity // 继承activity,application,service,broadcastReceiver,contentprovider....不进行混淆

       -keep public class * extends android.app.Application

       -keep public class * extends android.app.Service

       -keep public class * extends android.content.BroadcastReceiver

       -keep public class * extends android.content.ContentProvider

       -keep public class * extends android.app.backup.BackupAgentHelper

       -keep public class * extends android.preference.Preference

       -keep public class com.android.vending.licensing.ILicensingService

       -libraryjars /libs/android-support-v4.jar

       -libraryjars /libs/gdx-backend-android.jar

       -libraryjars /libs/gdx.jar

       // 这里不对第三方的jar包的提出WARN

       -dontwarn com.badlogic.

**

       -dontwarn android.support`这里写代码片`.v4.

**

       -dontwarn android.support.v4.view.

**

       // 这里对第三方jar包的类不进行混淆

       -keep class com.badlogic.gdx.backends.android.**{ *;}

       -keep class com.badlogic.gdx.**{ *;}

       -keep class com.badlogic.gdx.graphics.g2d.**{ *;}

       -keep class com.badlogic.gdx.graphics.**{ *;}

       -keep class android.support.v4.view.**{ *;}

       // 这里第三方JAR包处理结束

       -keepclasseswithmembernames class * { // natvie 方法不混淆

       native ;

       }

       -keepclasseswithmembers class * {

       // 对于所有类,有这个构造函数不进行混淆,主要是为了在layout中的,自定义的view

       public (android.content.Context, android.util.AttributeSet);

       }

       -keepclasseswithmembers class * {

       public (android.content.Context, android.util.AttributeSet, int);

       }

       -keepclassmembers class * extends android.app.Activity {

       // 这个主要是在layout 中写的onclick方法android:onclick="onClick",不进行混淆

       public void *(android.view.View);

       }

       -keepclassmembers enum * {

       public static **[] values();

       public static ** valueOf(java.lang.String);

       }

       -keep class * implements android.os.Parcelable {

       public static final android.os.Parcelable$Creator *;

       }

文章所属分类:探索频道,点击进入>>