Android JAR包手动混淆操作

当你的jar包需要给第三方开发者使用或者是app要发布的时候,java的混淆技术可以隐藏一定的技术细节。通过适当的配置文件可以把jar包需要开放的接口或者公开API暴露出来,从而不影响正常的使用。

无论是使用eclipse的集成环境还是直接使用proguard命令行进行混淆,都需要一个配置文件,在eclipse中是project根目录下的proguard-project.txt。下边是一个非常简单的例子:


# bring in libs: 如果没有引入android.jar这个库的话会报找不到java.utils.String,java.io.*等错误,这个库的路径可以在eclipse project的Android X.Y.Z里面看到。
# 如果你的项目里还用到了其他第三方jar库也要一样的引入。
-libraryjars "/home/gundam/work/tools/adt-bundle-linux-x86_64-20140702/sdk/platforms/android-10/android.jar"

# these classed may be export to other component in system
# 这些需要与系统中其他组件交互的类也不能混淆,例如你的Activity子类名称都变了的话,安卓就找不到AndroidManifest.xml里面定义好的activity了。
-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

# 对于jar包暴露给用户的工具类, 以及其pubic成员不能进行混淆
-keep public class com. mywork.demo.Worker
{
public <fields>;
public <methods>;
}

-keep public class com.mywork. demo.data.MessageParser
{
public <fields>;
public <methods>;
}

# 需要用户实现的接口,以及其pubic成员也不能进行混淆
-keep public interface com. mywork. demo.DownloadListener
{
public <fields>;
public <methods>;
}

写好配置文件之后,就可以使用工具进行混淆了。下边先介绍android sdk提供的一个图形化工具:sdk/tools/proguard/bin/proguardgui.sh

第一步,点load configuration把刚才我们写好的配置文件导入,然后next:

第二步,“add input”导入需要转换的jar包,"add output"填上输出的jar包名称(不填的话后续处理之后没有jar包输出),这一步之后,如果你导入的配置文件是非常齐全的,就可以一路next直接到第三步。否则的话,在每次next中都可以适当的修改配置,完成后还可以save当前配置,直至到第三步的界面出现。

第三步,点击process,成功的话如图所示,否则按照错误提示修改配置。建议不要忽略warning信息,否则生成的jar包放到其他project中有可能编译出错。

============================================================================
下边是使用命令行进行proguard的方法,基本命令:
java -jar proguard.jar @myconfig.pro
或者你需要看到详细运行输出的话:
java -jar proguard.jar @myconfig.pro -verbose

这里的myconfig.pro里面写的是混淆时用到的参数文件。
常用的方法是指定injas, outjars指定输入输出,然后用-includes或者@引入带有-keep的单独配置文件。
全部可用参数可以看proguard的文档,在安卓SDK的这个目录下:

/<sdk-dir>/tools/proguard/docs
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值