混淆Android JAR包的方法
来源:互联网 发布:央视 可视化呀数据 编辑:程序博客网 时间:2024/05/17 23:35
1)导出jar包
如何在eclipse上android工程中导出jar包?google,baidu.bing
2)混淆jar包,打乱代码
android的jar包跟普通的java的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这样的字母给混淆了。
提醒:如果你把上面配置直接拷贝过去,是会失败的,请将文件里的#号后的中文注释去掉,或者改成英文的。
- 混淆Android JAR包的方法
- 混淆Android JAR包的方法
- 混淆Android JAR包的方法
- 混淆Android JAR包的方法
- Android jar包的混淆
- 混淆Android的jar包
- 【Android】jar包Proguard混淆方法
- Android jar包Proguard混淆方法
- 【Android】jar包Proguard混淆方法
- 混淆ANDROID JAR包
- Android -- jar包混淆
- android jar包混淆
- Android jar包混淆
- Android -- jar包混淆
- Android Studio 打Jar包和混淆的Jar包
- Android打包出的jar包混淆
- android studio 生成混淆的jar包
- 关于 android 混淆 怎么去掉 混淆过依赖的jar包(混淆过的jar包不做二次混淆)
- 自定义控件系列之应用篇——自定义标题栏控件
- NDK开发环境搭建成功跑起JNI
- 机器学习算法(二)——决策树分类算法及R语言实现方法
- MFC 程序初始化
- mysql5.1忘记root密码找回密码以及mysql插入中文乱码问题解决
- 混淆Android JAR包的方法
- LeetCode (19) Multiply Strings
- arcgisengine中调用gp报错的问题
- C++ primer学习 1.4 if 语句
- 二维数组和指向指针的指针
- 算法的基本概念
- 关于win32 下DEBUG模式的研究
- java List转换为字符串并加入分隔符的一些方法总结
- IOS欢迎界面Launch Screen动态加载广告