`

使用混淆编译方式打包apk

 
阅读更多

一、解决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

 

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Apk混淆工具,给APK文件做混淆加密

    4. **打包工具**:将混淆、加密后的文件重新打包成APK,如使用APK打包器(apktool)或Gradle插件。 使用流程通常包括以下步骤: 1. **代码编写和调试**:首先,开发者需要完成应用的编码工作,并在未混淆的状态下...

    apk反编译和混淆及打包签名-keystore问题总结

    APK反编译、混淆以及打包签名是开发过程中的重要环节,涉及安全性和优化。本文将深入探讨这些概念,并提供相关的实践指导。 **一、APK反编译** APK反编译是为了查看和理解Android应用的源代码,这在调试、学习或者...

    007_android 之项目的打包apk与apk的反编译视频教材

    在Android开发过程中,打包APK和反编译APK是两个关键环节,它们涉及到软件的发布、调试以及安全分析。本教程"007_android 之项目的打包apk与apk的反编译视频教材"深入浅出地介绍了这些概念,旨在帮助开发者更好地...

    Androidapk反编译之androidAPK有效加密方法.pdf

    Android APK 反编译之有效防止破解和反编译加密方法主要包括混淆代码、防二次打包和 DEX、RES、SO 库等文件加密等。通过这些方法,我们可以有效防止 Android APK 被破解和反编译,保护 Android APP 的安全。

    反编译工具(apk)

    当我们谈论“反编译工具(APK)”,通常是指使用特定工具解析和提取APK中的这些组件,以便分析、修改或学习。常见的反编译工具有: - **Apktool**:这是一个用于反编译APK的开源工具,它能够解压资源文件,反编译Dex...

    apk反编译工具

    4. **反编译流程**:通常,反编译APK涉及以下步骤:首先,使用工具如unzip解压APK;然后,用Apktool解析XML和资源文件;接着,使用dex2jar处理.dex文件;最后,通过JD-GUI或JAD反编译Java字节码。 5. **使用目的**...

    APK反编译工具

    apktool是由IzzySoft开发的一款开源工具,主要用于解编译和重新打包APK文件。它能够将APK的二进制资源文件转换成人类可读的XML格式,包括AndroidManifest.xml、布局文件、字符串资源等。此外,apktool还能帮助我们...

    Apk反编译打包后版本

    本主题将详细介绍如何利用"Apk反编译打包后版本"中提供的工具——apktool、dex2jar和jd-gui.exe来完成这一过程。 首先,我们来了解下这些工具的作用: 1. **apktool**:这是一个强大的开源工具,主要用于反编译APK...

    apk反编译 DoApk

    - **重新打包**:修改完成后,使用DoApk等工具重新打包APK,将修改后的资源和类文件整合。 - **签名与优化**:最后,对新打包的APK进行签名,确保其可安装在Android设备上,并可能使用ProGuard进行代码混淆,提高...

    android打包APK

    二、使用Eclipse打包APK 如果你使用的是Eclipse,以下是打包步骤: 1. 打开Eclipse,选择已开发完成的Android项目。 2. 在菜单栏选择"Window" -&gt; "Android SDK Manager",确保已安装了目标API版本及Build Tools。 3....

    apktool反编译工具

    3. **重新打包**: 反编译后,开发者可以修改源代码或资源,然后使用Apktool将修改后的文件重新打包成新的APK。 4. **签名与优化**: 改造后的APK需要重新签名才能安装到设备上。Apktool提供了签名和优化的功能,确保...

    APK反编译工具.

    8. **防护措施**:为了防止APK被轻易反编译,开发者可能会使用一些保护措施,如代码加密、加固等。反编译时可能需要对抗这些防护机制,增加了解包的难度。 9. **法律问题**:反编译他人APK可能涉及侵犯版权,因此在...

    反编译APK文件

    在Android应用开发中,APK文件是应用程序的打包格式,它包含了所有运行应用程序所需的资源、代码和元数据。然而,由于APK文件是编译后的二进制形式,普通用户和开发者无法直接查看其源代码。为了理解APK的工作原理...

    APK 反编译 流程

    #### 二、重新打包APK 当完成资源文件和Java源代码的提取后,有时可能需要将这些文件重新打包成APK。这时可以再次使用`apktool`完成这一任务。 - **执行命令**:定位到`apktool`所在目录,在命令行中输入`apktool....

    ApkTool反编译工具

    ApkTool不仅支持基本的反编译和回编译,还提供了其他实用功能,比如支持对APK进行加密和混淆,以增强其安全性;或者用于分析和研究恶意软件,帮助安全研究人员发现潜在的威胁。 然而,值得注意的是,未经许可对他人...

    apk反编译.rar

    在反编译和重新打包APK后,需要重新签名才能在设备上正常安装和运行。 5. 反编译流程: 一般步骤包括:解压APK、使用Apktool解析资源、使用DEX2JAVA或类似工具处理DEX文件、查看源代码、修改源代码或资源、使用...

    一键反编译apk工具

    - Apktool:用于解包和重新打包APK,它可以解析资源文件并生成对应的Smali代码(Dalvik汇编语言)。 - Smali/baksmali:Smali是Dalvik字节码的汇编语言,baksmali是将.dex文件反汇编成Smali代码的工具,而smali则...

    Apk反编译加壳

    2. **代码混淆**:使用混淆工具(如Proguard或R8)对Java源码进行混淆,使得反编译后的代码难以理解。 3. **虚拟机加壳**:使用自定义的虚拟机环境执行APK代码,如 DexGuard 或 Xposed 框架,增加逆向分析的难度。 ...

    Android APK 反编译软件

    - 使用Apktool重新打包资源和反编译后的代码,生成新的APK。 3. **反编译的用途** - 安全分析:检查应用是否存在安全漏洞,如数据泄露、恶意行为等。 - 二次开发:基于开源项目进行定制化修改。 - 教学与研究:...

    ant proguard 混淆编译 之Eclipse-Idea

    在Android开发中,为了保护应用的安全性和优化代码,开发者通常会使用ProGuard工具进行混淆编译。本篇文章将聚焦于如何在Eclipse和IntelliJ IDEA(Idea)这两个不同的集成开发环境中配置并使用ProGuard,以实现对Ant...

Global site tag (gtag.js) - Google Analytics