一、解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
方法一:
Gson gson = new Gson();
// 将json格式字符串转化为List<对象>
Type listType = new TypeToken<ArrayList<PersonMsgMini>>(){}.getType();
personMsgList = gson.fromJson(jsonObject.getString("list"), listType);
方法二:
public class AttendanceMsgGson
{
//字段名要跟json字符串中的key一致
private ArrayList<AttendanceMsg> list;
public ArrayList<AttendanceMsg> getList()
{
return list;
}
public void setList(ArrayList<AttendanceMsg> list)
{
this.list = list;
}
}
Gson gson = new Gson();
AttendanceMsgGson attGson = gson.fromJson(result, AttendanceMsgGson.class);
下面是重点:
说明:
其中两种gson解析json字符串的方法都没有问题,问题主要是使用了混淆编译的方式进行apk打包(其中不混淆编译进行apk打包则一切正常),因为客户端代码中的JavaBean(实体类)的字段名称必须与服务端返回json字符串中的key要一致,才能进行解析,而混淆编
译之后,客户端代码中的JavaBean(实体类)的类名与其字段名称全部变成了a、b、c、d等等字符串,这与服务端返回的json字符串中的key不一致,导致解析失败。所以,解决的办法是:在进行混淆编译进行打包apk的时候,过滤掉存放所有JavaBean(实体类)的包不进行混淆编译。经过测试,一切正常。
在proguard.cfg文件中添加:
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
//这句非常重要,主要是滤掉 com.bgb.scan.model包下的所有.class文件不进行混淆编译
-keep class com.bgb.scan.model.** {*;}
二、-libraryjars libs/gson-1.7.1.jar,其中libs/其实省略了项目A的根目录,
如果是通过Is Library引用的项目,、-libraryjars libs/xxx.jar是不行的,因为引用进来的项目其jar路径如下:
xxxx\bgb_ws\Util_Universal_ImageLoader\bin\util_universal_imageloader.jar,
是在Util_Universal_ImageLoader项目的bin目录下。Util_Universal_ImageLoader与A项目同一文件夹,则在A中使用过滤是:-libraryjars ../Util_Universal_ImageLoader/bin/util_universal_imageloader.jar
相关推荐
proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。 下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用
NULL 博文链接:https://913.iteye.com/blog/1482126
带有界面,一键反编译Apk工具,直接打开Apk文件,就可以看到Apk中所有的文件结构,甚至还集成了dex文件查看,java代码查看,方法数分析、导入混淆mapping文件等一系列工具。谷歌推出这个工具的目的是为了让我们...
众所周知,在 android studio中的默认混淆打包出来的文件是abcdefg这种字母字典,想要修改混淆字典就得自定义配置,使用自定义混淆字典进行混淆,增加app被反编译后阅读的难度, 压缩包里面包含1il、o0O、中文、java...
准备一个测试apk(eclipse或androidstudio打包,混淆文件为eclipse或androidstudio默认带的),如Test_android.apk,复制一个副本重命名为Test_android.zip,然后解压,你就可以看到一些东西了,不过这种方式看到的大...
打包分debug版和release包,通常所说的打包指生成release版的apk,release版的apk会比debug版的小,release版的还会进行混淆和用自己的keystore签名,以防止别人反编译后重新打包替换你的应用。 简单点说就是给你...
得到其中的classes.dex文件 ,它就是java源代码经过编译再通过dx工具打包而成的。 2.2将classes.dex文件复制到步骤一解压的dex2jar的目录中。 2.3命令行下定位到dex2jar目录,运行 sudo sh d2j-dex2jar.sh classes....
三、 图形化反编译apk(本人未使用过) 上述步骤一、二讲述了命令行反编译apk,现在提供一种图形化反编译工具:Androidfby 首先,下载上述反编译工具包,打开Androidfby目录,双击Android反编译工具.exe,就可以浏览...
系统通过对apk反编译,随机包名,随机签名,混淆代码等方式,回编译生成新的apk安装包 通过系统智能自动处理,间隔5分钟(可以自定义时间)生成一个新包,通过对接对象云储存系统 分发给不同的用户下载使用,确保...
本文主要是讲述资源混淆组件的用法以及性能,资源混淆组件不涉及编译过程,只需输入一个apk(无论签名与否,debug版,release版均可,在处理过程中会直接将原签名删除),可得到一个实现资源混淆后的apk(若在配置文件...
只需轻松几步配置,即可快速完成加固,同时提供命令行接入方式,可以实现一键编译、打包、加固。 如何使用深思iOS应用加固-VirboxProtector 1.申请试用 注册VirboxProtector账号即可下载安装使用。 申请试用地址:...
第二步:如果之前有编译成APK的话,就直接选择Choose existing已经存在的key;如果没有编译成APK那就选择Create new创建一个新的key的存放路径,然后填上密码,其中First and Last Name填一下,其他的无所谓。如图 ...
这个软件主要是pc端的Androoid反编译工具,用于对apk的反编译、反汇编、打包apk、签名apk
3.源码混淆的方式保护,从而防止代码泄露 4.通过对内容的监控,防止特定的内容被dump 网易云加密主要功能 对抗静态分析 对Dex文件整体加密,并剥离核心逻辑,samli、JEB、Jadx等反编译工具分析应用逻辑,保护...
java反编译class源码MARA_框架 MARA是A M obile甲pplicationřEVERSE工程和A nalysis框架。 它是一个将常用的移动应用程序逆向工程和分析工具组合在一起的工具,...通过以下方式识别编译器、打包器和混淆器 通过正则表
AndResGuard 是一款 Android资源混淆工具,资源混淆组件不涉及编译过程,只需输入一个apk(无论签名与否,debug版,release版均可,在处理过程中会直接将原签名删除),可得到一个实现资源混淆后的apk(若在配置文件中...
Android打包过程大致如图所示,整个流程就是将Java代码,资源文件以及第三方库整合成一个Apk文件,并对整合后的文件进行签名和优化对齐。整个过程可以简 单分为以下几个步骤: 资源预编译 为每一个非assert资源...
Android-Batch-Pack 是实现批量打包apk的工具,适用于包含了第三方library project的project,并且不影响project的代码混淆,每次打包自动修改用于统计的渠道标签(如友盟统计的channel tag)。目前只是用于windows...
它不仅支持基本的反编译操作,而且还具有许多出色的功能,例如恶意行为检测,隐私泄漏检测,漏洞检测,路径解决,打包程序标识,变量跟踪分析,反混淆,Python和Java脚本,设备内存提取,数据解密和加密等 ...