androidzxing生成
A. android zxing需要哪些权限
在导入zxing的android源码之前,先去官方下载zxing的源码:http://code.google.com/p/zxing/downloads/list。
我这里下载的是1.6版本的,我试验了几个版本,发现2.0以后的版本实际用起来没有1.6和1.7版本的好用,最后选择了1.6版本。
zxing 1.6源码结构如下:
B. 在android中使用googlezxing实现二维码
先打开本地下载,复制文件,拷贝到他们的项目中即可。
首先我们打开google的zxing的地址,googledezxing地址(本地下载),打开之后我们会看到界面,将这个文件下载我们本地,下载好之后我们需要复制android文件下的几个类,根据这些类名称在android文件下找到这些类,拷贝到他们的项目中,拷贝之后会有报错,我们需要将android文件下的res中的文件也拷贝到我们的项目中。完成之后我们还要依赖zxing的核心类库,当我们的项目不报错的时候,就可以先实现扫描二维码和生成二维码。
C. android项目中加入zxing,混淆打包出错,求解决
写在视图xml中的onClick响应出错. 因为写在xml中的onClick是通过反射调用的, proguard认为它们没有在代码中被调用过, 所以将它们从代码中除掉或改名了. 解决方法:
在proguard.cfg中添加以下代码, 就可以防止被配在视图xml中的onClick方法被proguard优化掉
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}123123
jni反调java方法
这些类或方法同样可能会被proguard认为没有调用过而被除掉, 或都被改名. 这些方法最好统一写在一个类中, 然后这个类不作优化, 或是找出所有jni调用过的类与方法, 在proguard.cfg中配置, 不对它们作优化
其它反射调用的java类与方法
使用反射时一定要注意proguard可能会认为那些方法未被调用过, 会在代码优化过程中将它们改名或除去. 在使用反射的地方一定要在proguard.cfg中配置, 不优化反射调用过的类和方法
最后在proguard优化过后会产生一些文件
mp.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
-
-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.
-libraryjars /libs/android-support-v4.jar
-libraryjars /libs/gdx-backend-android.jar
-libraryjars /libs/gdx.jar123123
// 这里不对第三方的jar包的提出WARN
-dontwarn com.badlogic.**
-dontwarn android.support`这里写代码片`.v4.**
-dontwarn android.support.v4.view.**12341234
// 这里对第三方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.**{ *;}123456123456
// 这里第三方JAR包处理结束
-keepclasseswithmembernames class * { // natvie 方法不混淆
native ;
} 12341234
-keepclasseswithmembers class * {
// 对于所有类,有这个构造函数不进行混淆,主要是为了在layout中的,自定义的view
public (android.content.Context, android.util.AttributeSet);
} 12341234
-keepclasseswithmembers class * {
public (android.content.Context, android.util.AttributeSet, int);
} 123123
-keepclassmembers class * extends android.app.Activity {
// 这个主要是在layout 中写的onclick方法android:onclick="onClick",不进行混淆
public void *(android.view.View);
} 12341234
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
} 12341234
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
D. 如何在android studio 中引入zxing
在android studio 中引入zxing方法如下:
1、下载源代码,导航栏,选择Downloads。
2、导入项目。解压下载的.zip文件,打开Eclipse,菜单栏,选择file -> new -> project...
在弹出的New Project对话框中,选择Android -> Android Project from Existing Code,点击Next Root Directory文本框,点击Browse按钮,选择zxing/android文件夹,点击Finish即可。
E. android 解析条形码 ZXing库详细介绍
Zxing是谷歌的开源项目,你要研究它,先要找到他的入口,你去androidmanifest,xml中看看那个是程序的主启动类,然后根据主入口,一步一步看它的执行过程,最好打打DEBUG断点,那你可以更好的知道代码执行到哪里了!! 有摄像头是肯定的,没有如何扫描呢??目前好像不支持本地的条形码解析吧,扫描功能不是摄像头带的,是用代码去操控摄像头的!!建议你去google找到这个项目主页,下载那个ZxingTEST,这个比完整版的代码要简单,你可以看看