日积月累:ProguardGui进行jar包代码混淆

时间:2022-08-24 16:03:03

前面文章《Proguard进行源代码混淆》讲解过怎么使用Proguard工具对Android的源代码进行混淆的方法(感兴趣的朋友可以访问:http://blog.csdn.net/p106786860/article/details/11974863),但是在实际工作中发现,通过上述方法对导出的Jar并没有进行混淆。

下面我们就介绍,如果对导出的Jar包进行代码混淆。

一、准备工作

首先我们要准备好:1.你已经导出的jar包(srcjar.jar)文件,2.ProguardGui工具 (sdk\tools\proguard\bin\proguardgui.bat)。

日积月累:ProguardGui进行jar包代码混淆
日积月累:ProguardGui进行jar包代码混淆

二、操作步骤

1.启动proguardgui工具。

双击groguardgui.bat文件,运行如下图:

日积月累:ProguardGui进行jar包代码混淆

2.设置我们需要混淆的jar包和混淆后输出的jar包。

点击左边的Input/Output按钮,运行如下图。在点击Add input按钮,添加我们需要进行混淆的jar包(srcjar.jar)。点击Add output按钮,填入我们要输出的jar包的名称。

日积月累:ProguardGui进行jar包代码混淆

3.添加jar包支持的库。

点击下面的Add按钮,一一添加jar包支持的库。建议把你的Eclipe中,项目下所有的jar包都拷贝到一个统一的目录中,然后进行添加。

日积月累:ProguardGui进行jar包代码混淆

项目中所有的jar支持

日积月累:ProguardGui进行jar包代码混淆

集中了所有的jar在同一个文件夹下

日积月累:ProguardGui进行jar包代码混淆

添加了jar包支持的库

4.依次设置混淆的各种配置

依次点击Shrinking按钮、Obfuscation按钮、Optimization按钮和Information按钮,分别对混淆进行各种配置。

5.保存混淆的配置文件

点击Process按钮,在点击Save configuration按钮,保存我们混淆配置文件。

日积月累:ProguardGui进行jar包代码混淆

6.根据需求修改混淆配置文件

在真实的项目中,可能由于各种第三方的jar包,自动类和控件等问题,在混淆的时候,会导致各种类无法找到的问题。使用文本编辑器打开srcjar.pro文件,可以根据自己的需求编辑混淆配置。


-injars ruyicai.jar //需要混淆的jar包
-outjars ruyicai-out.jar //混淆完毕输出的jar包 //引用依赖的jar包
-libraryjars 'C:\Program Files\Java\jdk1.6.0_43\jre\lib\rt.jar'
… ...
-libraryjars libs\weibo-1.2.jar -optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* //在混淆的过程中,建议保留Activity,Application四大组件,其它的类可根据实际情况设置是否混淆
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
… …
-keep public class com.ruyicai.activity.common.PullRefreshListView{*;} //不混淆第三方的jar包
-keep class com.alipay.android.app.**{*;}
… ...
-keep class cn.jpush.android.**{*;} //后面的规则使用默认的,这里不在描述
… ….

7.载入混淆配置文件,对Jar进行混淆

重新启动proguardgui程序,在点击右边Proguard按钮,点击Load configration按钮,导入上面配置好的混淆文件。

日积月累:ProguardGui进行jar包代码混淆

然后点击右边Process按钮,再次点击下面的Process按钮,进行Jar的混淆。

日积月累:ProguardGui进行jar包代码混淆

如出现上图successfully提示,则混淆完毕

日积月累:ProguardGui进行jar包代码混淆的更多相关文章

  1. Android Studio导出Jar包并混淆

    在Android Studio中,自带反编译查看class文件,如果没有混淆的话,class文件跟java文件基本没有区别了,为了保护,还是混淆的好. 网上看了不少资料,都是直接下载proguard额 ...

  2. 【Android】jar包Proguard混淆方法

    本文章的前提条件是,读者已经掌握了正确导出jar包的技能. 1.拷贝Android项目中“proguard.cfg”文件到你指定的位置,并改名为“proguard.pro”,此步是为proguardg ...

  3. android studio gradle 打jar 包 (混淆+第三方库包)

    将依赖的第三方库打包进自己的jar包 1.先将第三方的库包拿到,然后添加jar包到项目的libs. 2.项目的build.gradle脚本添加下面的task: task buildJar(depend ...

  4. Eclipse 4.11 Debug jar包代码时进入空心J

    代码调试时,进入jar包中的时候,会出现如下的情况超级影响代码调试 断点打在上面的地方,但是却进入到了空心J的那个地方了. 解决办法:去掉勾选即可. 我是这么解决的.

  5. git+jenkins jar包代码的发布加新建项目

    1.本地仓库  java开发 把代码上传上来 ,问一下他要上传到的主机ip , 分支 2.本地 , 设置-->仓库 更新数据,让他同步到南阳gitlab, 若没有这个项目,需要创建相同名字的项目 ...

  6. android studio 代码混淆如何忽略第三方jar包

    日前在打包混淆包含第三方jar包的Android studio项目时 报出了各种错误,但是debug版本却能正常运行,于是怀疑android studio 打包的时候把第三方jar包给混淆了,第三方j ...

  7. 在Eclipse上打包并使用Proguard工具混淆jar包

    近期由于工作须要,学习到了Android jar包的打包与混淆. 之前觉得还是非常easy的,可是自己深入研究下,发现还是有一些东西须要注意的,并且自己也踩了一些坑,在这里写下供同僚们借鉴借鉴. 转载 ...

  8. 安卓代码混淆(Android Studio)

    Proguard是安卓提供的方便开发者对代码和apk进行保护和精简的工具,可在SDK/tools文件夹下找到.   proguard的作用 : 1,代码混淆 2,精简代码,删掉没有用到的代码,减小ap ...

  9. (通用)Android App代码混淆终极解决方案【转】

    App虽然没有那么的高大上,但是代码的混淆是代表了程序员对App的责任心, 也是对App安全的一点点保证.今天我会将自己做Android混淆的过程和体会分享给大家,也避免大家少走弯路,少跳坑. 本篇博 ...

随机推荐

  1. WordPress酷炫CSS3读者墙代码

    前几日在大前端看到他站点中最新的CSS3读者墙代码,一看效果绚丽的不得鸟,立刻就开始研究了,多次研究未果,可终究是研究出来了,昨天刚成功,今天啊和童鞋来我站说读者墙头像显示不对,我一看,还真是,头像都 ...

  2. HDU 4639 Hehe(字符串处理,斐波纳契数列,找规律)

    题目 //每次for循环的时候总是会忘记最后一段,真是白痴.... //连续的he的个数 种数 //0 1 //1 1 //2 2 //3 3 //4 5 //5 8 //…… …… //斐波纳契数列 ...

  3. 最简单的视音频播放示例3:Direct3D播放YUV,RGB(通过Surface)

    上一篇文章记录了GDI播放视频的技术.打算接下来写两篇文章记录Direct3D(简称D3D)播放视频的技术.Direct3D应该Windows下最常用的播放视频的技术.实际上视频播放只是Direct3 ...

  4. 从Owin到System.Web.Http.Owin的HttpMessageHandlerAdapter看适配器模式

    .mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...

  5. CRM中QueryDict和模型表知识补充

    CRM中QueryDict和模型表知识补充 1.QueryDict的用法 request.GET的用法:1.在页面上输入:http://127.0.0.1:8000/index/print(reque ...

  6. MySQL笔记(7)---事务

    1.前言 前面具体讲了MySQL中的锁实现的方式,解释了是如何保证数据在并发情况下的可靠性,并提到了事务REPETABLE READ和READ COMMITTED,解释了一下这两种事务的不同.本章讲具 ...

  7. Mybatis教程-实战看这一篇就够了

    转自:https://blog.csdn.net/hellozpc/article/details/80878563 1.从JDBC谈起 1.1.使用IDEA创建maven工程 1.2.引入mysql ...

  8. 商业价值:苹果iTV,再一次改变世界?

    苹果(Apple)公司打算进军智能电视领域,这在行业里已经不是秘密,有关苹果智能电视的消息也是不绝于耳,结合苹果产品线的命名规则,苹果智能 电视基本上就是iTV.就目前而言,Android智能系统已经 ...

  9. Django的时区设置问题

    1.Django的时区问题 django默认的时区是UTC,平时是没有什么影响的,但是在需要将时间戳转换成本时区的时间或者是获取当前的本地的localtime的时候就出现了问题.之前程序在测试时是运行 ...

  10. 如何对exec sp_who2的结果进行选择和排序?

    从网上找到了下面的两个脚本, 笔者试用过, 很好. 故记在这里.   方法一, 用临时表 CREATE TABLE #sp_who2 ( SPID INT, Status VARCHAR(255), ...