博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
混淆Android JAR包的方法
阅读量:5116 次
发布时间:2019-06-13

本文共 2774 字,大约阅读时间需要 9 分钟。

http://blog.csdn.net/vurtne_ye/article/details/35599491

1)导出jar包

  如何在eclipse上工程中导出jar包?google,baidu.bing

  2)混淆jar包,打乱代码

  android的jar包跟普通的的jar包不一样,我们不想打乱一些activity或者server等跟系统打交道的代码,这是因为如果把这些也混淆了,那你还需要搞清楚混淆后这些activity变成了什么名字,然后告诉使用你这个jar包的人androidmanifest.xml中增加这些打乱了名字的activity。

  混淆jar包用到的工具是proguard,可以在android SDK里面找到,如我的是在...\adt-bundle-windows-x86-20130219\sdk\tools\proguard。

  运行sdk\tools\proguard\bin\proguardgui.bat,运行界面如下,如果点击next,会发现这些配置很难配(全英文,又很杂)。

  其实这里直接导入一个cfg文件就可以了,单击下图右下角的Load Configuration,然后选择配置文件。

  配置文件又要怎么写?找到android工程里面的proguard.cfg文件,这个文件是用来混淆apk代码的配置文件,我们现在是要混淆jar包的代码,当然不能直接用。看下面是proguard.cfg的配置,配置会保留activity和server等一些类。这些配置都是不用改的,可以直接拿来用。

-optimizationpasses
5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!
class
/merging/*
 
-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
 
-keepclasseswithmembernames
class 
* {
    
native 
<methods>;
}
 
-keepclasseswithmembers
class 
* {
    
public 
<init>(android.content.Context, android.util.AttributeSet);
}
 
-keepclasseswithmembers
class 
* {
    
public 
<init>(android.content.Context, android.util.AttributeSet,
int
);
}
 
-keepclassmembers
class 
*
extends 
android.app.Activity {
   
public 
void 
*(android.view.View);
}
 
-keepclassmembers
enum 
* {
    
public 
static 
**[] values();
    
public 
static 
** valueOf(java.lang.String);
}
 
-keep
class 
*
implements 
android.os.Parcelable {
  
public 
static 
final 
android.os.Parcelable$Creator *;
}

  将上面的配置增加几行改成如下,并重新命名文件为:test.pro

-optimizations !code/simplification/arithmetic,!field/*,!
class
/merging/*
 
//...begin
#混淆后的导出jar包的位置和jar包名
-outjars
'E:\test_after.jar'
 
#原始jar包的位置和jar包名
-injars
'E:\test.jar'
 
#jar包依赖的其他库的位置和名称
-libraryjars
'E:\workspace\beautytilepuzzle\libs\alipay_msp.jar'
-libraryjars
'E:\workspace\beautytilepuzzle\libs\android-support-v4.jar'
-libraryjars
'E:\android\adt-bundle-windows-x86-20130219\sdk\platforms\android-10\android.jar'
 
#下面的Test类将不会被混淆,这样的类是需要被jar包使用者直接调用的
-keep
public 
class 
com.example.Test {
    
public 
<fields>;
    
public 
<methods>;
}
//...end
 
-keep
public 
class 
*
extends 
android.app.Activity

  现在Load Configuration里选择上面test.pro,一直next,最后混淆后的jar包就是E://test_after.jar。

用winrar打开jar包,会发现除了Test.class,一些继承自activity等的class外,其他的类都被abcdefg这样的字母给混淆了。

提醒:如果你把上面配置直接拷贝过去,是会失败的,请将文件里的#号后的中文注释去掉,或者改成英文的。

转载于:https://www.cnblogs.com/jukan/p/6420866.html

你可能感兴趣的文章
虚拟化架构中小型机构通用虚拟化架构
查看>>
继承条款effecitve c++ 条款41-45
查看>>
HTML+CSS学习笔记(九)
查看>>
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>
rsync
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>
图片等比例缩放及图片上下剧中
查看>>
【转载】Linux screen 命令详解
查看>>
background-clip,background-origin
查看>>
Android 高级UI设计笔记12:ImageSwitcher图片切换器
查看>>
Blog文章待看
查看>>
【Linux】ping命令详解
查看>>
对团队成员公开感谢博客
查看>>
java学习第三天
查看>>
python目录
查看>>