Proguard进行Jar包混淆
2016-06-22 19:36
330 查看
前面文章《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文件,运行如下图:
如果你有自己已经写好的proguard.cfg文件,这里直接引用即可,但是记得不要在里面加入支持引用
包相关的文字,如:
-libraryjars libs\weibo-1.2.jar 否则会报错不能够载入。
2.设置我们需要混淆的jar包和混淆后输出的jar包。
点击左边的Input/Output按钮,运行如下图。在点击Add input按钮,添加我们需要进行混淆的jar包(srcjar.jar)。点击Add output按钮,填入我们要输出的jar包的名称。
3.添加jar包支持的库。
点击下面的Add按钮,一一添加jar包支持的库。建议把你的Eclipe中,项目下所有的jar包都拷贝到一个统一的目录中,然后进行添加。
项目中所有的jar支持
这里一定要特别注意:
android.jar和rt.jar两个系统jar包是必须要引用的,android.jar引用当前sdk版本的jar,而rt.jar在JDK目录下的jre下的lib目录下,
同时特别注意,rt.jar在某些proguard上只支持1.7以下的版本,所以可能需要降级到1.7的jdk才可以,或者从别人那拷贝一份来。
集中了所有的jar在同一个文件夹下
添加了jar包支持的库
4.依次设置混淆的各种配置
依次点击Shrinking按钮、Obfuscation按钮、Optimization按钮和Information按钮,分别对混淆进行各种配置。
5.保存混淆的配置文件
点击Process按钮,在点击Save configuration按钮,保存我们混淆配置文件。
6.根据需求修改混淆配置文件
在真实的项目中,可能由于各种第三方的jar包,自动类和控件等问题,在混淆的时候,会导致各种类无法找到的问题。使用文本编辑器打开srcjar.pro文件,可以根据自己的需求编辑混淆配置。
一般外部引用到的类及接口都不要进行混淆,keep class和keep interface是通用的,两种写法都可以,其次最好不要引用太多第三方包,容易出问题。
[plain] view
plaincopy
[plain] view
plaincopy
-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 * 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.ILicensingService
-keepattributes *Annotation*,EnclosingMethod
-keepattributes JavascriptInterface
-keepattributes Signature
-ignorewarnings
-dontwarn android.support.**
-keep class android.support.** { *;}-dontwarn android.content.pm.**
-keep class android.content.pm.** { *;}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclasseswithmembernames class * {
native <methods>;
}
#-assumenosideeffects class android.util.Log {
#
# public static *** d(...);
# public static *** v(...);
#}
#-assumenosideeffects class android.util.Log {
# public static *** e(...);
# public static *** v(...);
#}
-keep public class * extends android.app.Fragment
-keep class * implements android.os.Parcelable { *; }
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class * implements android.os.Parcelable {
public <fields>;
private <fields>;
}
-keep class * implements java.io.Serializable { *; }
-keep class android.app.IServiceConnection { *;}
-keep class * implements android.os.IInterface { *;}
-keep class android.util.Singleton { *;}
-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提示,则混淆完毕
转载自:http://blog.csdn.net/p106786860/article/details/12168703
下面我们就介绍,如果对导出的Jar包进行代码混淆。
一、准备工作
首先我们要准备好:1.你已经导出的jar包(srcjar.jar)文件,2.ProguardGui工具 (sdk\tools\proguard\bin\proguardgui.bat)。
二、操作步骤
1.启动proguardgui工具。
双击groguardgui.bat文件,运行如下图:
如果你有自己已经写好的proguard.cfg文件,这里直接引用即可,但是记得不要在里面加入支持引用
包相关的文字,如:
-libraryjars libs\weibo-1.2.jar 否则会报错不能够载入。
2.设置我们需要混淆的jar包和混淆后输出的jar包。
点击左边的Input/Output按钮,运行如下图。在点击Add input按钮,添加我们需要进行混淆的jar包(srcjar.jar)。点击Add output按钮,填入我们要输出的jar包的名称。
3.添加jar包支持的库。
点击下面的Add按钮,一一添加jar包支持的库。建议把你的Eclipe中,项目下所有的jar包都拷贝到一个统一的目录中,然后进行添加。
项目中所有的jar支持
这里一定要特别注意:
android.jar和rt.jar两个系统jar包是必须要引用的,android.jar引用当前sdk版本的jar,而rt.jar在JDK目录下的jre下的lib目录下,
同时特别注意,rt.jar在某些proguard上只支持1.7以下的版本,所以可能需要降级到1.7的jdk才可以,或者从别人那拷贝一份来。
集中了所有的jar在同一个文件夹下
添加了jar包支持的库
4.依次设置混淆的各种配置
依次点击Shrinking按钮、Obfuscation按钮、Optimization按钮和Information按钮,分别对混淆进行各种配置。
5.保存混淆的配置文件
点击Process按钮,在点击Save configuration按钮,保存我们混淆配置文件。
6.根据需求修改混淆配置文件
在真实的项目中,可能由于各种第三方的jar包,自动类和控件等问题,在混淆的时候,会导致各种类无法找到的问题。使用文本编辑器打开srcjar.pro文件,可以根据自己的需求编辑混淆配置。
一般外部引用到的类及接口都不要进行混淆,keep class和keep interface是通用的,两种写法都可以,其次最好不要引用太多第三方包,容易出问题。
[plain] view
plaincopy
[plain] view
plaincopy
-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 * 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.ILicensingService
-keepattributes *Annotation*,EnclosingMethod
-keepattributes JavascriptInterface
-keepattributes Signature
-ignorewarnings
-dontwarn android.support.**
-keep class android.support.** { *;}-dontwarn android.content.pm.**
-keep class android.content.pm.** { *;}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclasseswithmembernames class * {
native <methods>;
}
#-assumenosideeffects class android.util.Log {
#
# public static *** d(...);
# public static *** v(...);
#}
#-assumenosideeffects class android.util.Log {
# public static *** e(...);
# public static *** v(...);
#}
-keep public class * extends android.app.Fragment
-keep class * implements android.os.Parcelable { *; }
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class * implements android.os.Parcelable {
public <fields>;
private <fields>;
}
-keep class * implements java.io.Serializable { *; }
-keep class android.app.IServiceConnection { *;}
-keep class * implements android.os.IInterface { *;}
-keep class android.util.Singleton { *;}
-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提示,则混淆完毕
转载自:http://blog.csdn.net/p106786860/article/details/12168703
相关文章推荐
- 二叉树的建立与递归遍历C语言版
- OpenCv:椭圆上点的计算方程
- Android仿淘宝商品自动滚动 ImageSwitcher和TextSwitcher的用法
- 【洛谷2038 无线网络发射器选址】【模拟】
- Java...和泛型
- 编写俄罗斯方块收获(1):XML配置文件及反射
- Android图片setBackgroundResource和setImageResource的区别
- ssm框架的项目,使用maven管理,启动服务器报错
- 阻止冒泡的兼容写法
- Spark RDD使用详解1--RDD原理
- Unity3D游戏开发 地形系统(四)
- git push 操作代码回退
- Linux下的inode记录
- ThreadLocal & Reference
- dash live 播放
- IOS-UIImageView
- got fatal error 1236 from master when reading data from binary log
- iOS开发 - 第02篇 - UI进阶 - 16 - 彩票(第三天)
- 不用加减乘除做加法48
- mac下vim的16种配色方案(代码高亮)展示,及配置