前面文章《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)。
二、操作步骤
1.启动proguardgui工具。
双击groguardgui.bat文件,运行如下图:
2.设置我们需要混淆的jar包和混淆后输出的jar包。
点击左边的Input/Output按钮,运行如下图。在点击Add input按钮,添加我们需要进行混淆的jar包(srcjar.jar)。点击Add output按钮,填入我们要输出的jar包的名称。
3.添加jar包支持的库。
点击下面的Add按钮,一一添加jar包支持的库。建议把你的Eclipe中,项目下所有的jar包都拷贝到一个统一的目录中,然后进行添加。
项目中所有的jar支持
集中了所有的jar在同一个文件夹下
添加了jar包支持的库
4.依次设置混淆的各种配置
依次点击Shrinking按钮、Obfuscation按钮、Optimization按钮和Information按钮,分别对混淆进行各种配置。
5.保存混淆的配置文件
点击Process按钮,在点击Save configuration按钮,保存我们混淆配置文件。
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按钮,导入上面配置好的混淆文件。
然后点击右边Process按钮,再次点击下面的Process按钮,进行Jar的混淆。
如出现上图successfully提示,则混淆完毕
日积月累:ProguardGui进行jar包代码混淆的更多相关文章
-
Android Studio导出Jar包并混淆
在Android Studio中,自带反编译查看class文件,如果没有混淆的话,class文件跟java文件基本没有区别了,为了保护,还是混淆的好. 网上看了不少资料,都是直接下载proguard额 ...
-
【Android】jar包Proguard混淆方法
本文章的前提条件是,读者已经掌握了正确导出jar包的技能. 1.拷贝Android项目中“proguard.cfg”文件到你指定的位置,并改名为“proguard.pro”,此步是为proguardg ...
-
android studio gradle 打jar 包 (混淆+第三方库包)
将依赖的第三方库打包进自己的jar包 1.先将第三方的库包拿到,然后添加jar包到项目的libs. 2.项目的build.gradle脚本添加下面的task: task buildJar(depend ...
-
Eclipse 4.11 Debug jar包代码时进入空心J
代码调试时,进入jar包中的时候,会出现如下的情况超级影响代码调试 断点打在上面的地方,但是却进入到了空心J的那个地方了. 解决办法:去掉勾选即可. 我是这么解决的.
-
git+jenkins jar包代码的发布加新建项目
1.本地仓库 java开发 把代码上传上来 ,问一下他要上传到的主机ip , 分支 2.本地 , 设置-->仓库 更新数据,让他同步到南阳gitlab, 若没有这个项目,需要创建相同名字的项目 ...
-
android studio 代码混淆如何忽略第三方jar包
日前在打包混淆包含第三方jar包的Android studio项目时 报出了各种错误,但是debug版本却能正常运行,于是怀疑android studio 打包的时候把第三方jar包给混淆了,第三方j ...
-
在Eclipse上打包并使用Proguard工具混淆jar包
近期由于工作须要,学习到了Android jar包的打包与混淆. 之前觉得还是非常easy的,可是自己深入研究下,发现还是有一些东西须要注意的,并且自己也踩了一些坑,在这里写下供同僚们借鉴借鉴. 转载 ...
-
安卓代码混淆(Android Studio)
Proguard是安卓提供的方便开发者对代码和apk进行保护和精简的工具,可在SDK/tools文件夹下找到. proguard的作用 : 1,代码混淆 2,精简代码,删掉没有用到的代码,减小ap ...
-
(通用)Android App代码混淆终极解决方案【转】
App虽然没有那么的高大上,但是代码的混淆是代表了程序员对App的责任心, 也是对App安全的一点点保证.今天我会将自己做Android混淆的过程和体会分享给大家,也避免大家少走弯路,少跳坑. 本篇博 ...
随机推荐
-
WordPress酷炫CSS3读者墙代码
前几日在大前端看到他站点中最新的CSS3读者墙代码,一看效果绚丽的不得鸟,立刻就开始研究了,多次研究未果,可终究是研究出来了,昨天刚成功,今天啊和童鞋来我站说读者墙头像显示不对,我一看,还真是,头像都 ...
-
HDU 4639 Hehe(字符串处理,斐波纳契数列,找规律)
题目 //每次for循环的时候总是会忘记最后一段,真是白痴.... //连续的he的个数 种数 //0 1 //1 1 //2 2 //3 3 //4 5 //5 8 //…… …… //斐波纳契数列 ...
-
最简单的视音频播放示例3:Direct3D播放YUV,RGB(通过Surface)
上一篇文章记录了GDI播放视频的技术.打算接下来写两篇文章记录Direct3D(简称D3D)播放视频的技术.Direct3D应该Windows下最常用的播放视频的技术.实际上视频播放只是Direct3 ...
-
从Owin到System.Web.Http.Owin的HttpMessageHandlerAdapter看适配器模式
.mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...
-
CRM中QueryDict和模型表知识补充
CRM中QueryDict和模型表知识补充 1.QueryDict的用法 request.GET的用法:1.在页面上输入:http://127.0.0.1:8000/index/print(reque ...
-
MySQL笔记(7)---事务
1.前言 前面具体讲了MySQL中的锁实现的方式,解释了是如何保证数据在并发情况下的可靠性,并提到了事务REPETABLE READ和READ COMMITTED,解释了一下这两种事务的不同.本章讲具 ...
-
Mybatis教程-实战看这一篇就够了
转自:https://blog.csdn.net/hellozpc/article/details/80878563 1.从JDBC谈起 1.1.使用IDEA创建maven工程 1.2.引入mysql ...
-
商业价值:苹果iTV,再一次改变世界?
苹果(Apple)公司打算进军智能电视领域,这在行业里已经不是秘密,有关苹果智能电视的消息也是不绝于耳,结合苹果产品线的命名规则,苹果智能 电视基本上就是iTV.就目前而言,Android智能系统已经 ...
-
Django的时区设置问题
1.Django的时区问题 django默认的时区是UTC,平时是没有什么影响的,但是在需要将时间戳转换成本时区的时间或者是获取当前的本地的localtime的时候就出现了问题.之前程序在测试时是运行 ...
-
如何对exec sp_who2的结果进行选择和排序?
从网上找到了下面的两个脚本, 笔者试用过, 很好. 故记在这里. 方法一, 用临时表 CREATE TABLE #sp_who2 ( SPID INT, Status VARCHAR(255), ...