开发SDK,使用ProGuard混淆jar包(上篇)

背景

我在目前的公司是一名Android SDK开发工程师,到公司之后就研发了自己公司的一套SDK,提供给游戏方接入。SDK最后成型是一个jar包的方式提供给游戏开发商的。所以当我们正式提供SDK给游戏开发接入的时候,是混淆一下jar包才提供出去。如果不是,就很容易被人反编译出来。从而泄露了里面程序逻辑。造成不必要的风险因素,所以今天记录一下,我混淆jar包的全过程。希望能给你们一些参考。

Jar包混淆与apk混淆区别

我们原生的Android开发,开发一个app无论是使用Eclipse还是Android Studio,在最后编译正式包的时候,都是通过配置proguard文件去进行apk的混淆,apk的混淆可以说是一体的,因为我们无需给第三方提供相应的接口。而jar包是需要给第三方提供相应功能的接入接口,所以我们的混淆规则中,需要保证这类接口不能被混淆。否则会导致接口不可用。接下来,听我一步步解释其中原由。

基本配置操作

首先,在Eclipse或者Android Studio上是无法实现对jar包进行混淆的。不过还是有工具是可以混淆jar包的,就是ProGuard!这个工具可以在你的sdk\tools\proguard\bin目录中找到。


双击打开文件后,可以看到下图界面


然后我们点击 Input/Output 按钮,然后我们先看一下,我最后提供给游戏的jar包目录


在混淆jar包前,我们需要配置ProGuard

1.导入需要jar包,设置导出后jar包路径与名字

2.导入混淆jar包需要依赖的jar

3.导入必要的两个jar包,一个是Jre的rt.jar,因为我们编写的语言就是java语言,java运行基础是要在jre上。一个是android.jar,因为我们Android开发有自己的编译库,比如Fragment,Activity等都需要用到。

把上面的步骤配置好后,就有了下图


配置基本混淆规则

完成上面的基本配置后,我们就要进入了基本的混淆规则配置。点击 Shrinking 按钮,我们需要先取消掉Shrink的勾选,因为如果勾选Shrink,工具会认为我们所有代码都是无用的,会把所有代码都压缩掉。最后导出的是一个空的jar包。

接下来点击 Obfuscation 按钮。obfuscation的中文意思是混淆,就是说这个界面就是配置混淆规则的。首先我们需要保持四大组件不被混淆。点击右下角的 Add 按钮。就会出现如下界面,只需在Extends/implements class这一项,填写上四大组件就可以完成配置。


配置完成四大组件还有一个Application后,界面上就多了这些配置信息


点击 Next  按钮,接下来两个界面不需要我们怎么去配置。到了最后 Process 界面


点击 View configuration 后可以看到你刚配置的信息


点击 Process 按钮,开始混淆jar包。出现下面这句话,就证明了混淆成功了。


我们打开相应的jar包,看看里面的代码。



到这里已经成功把jar包混淆了,但是真正能用的话,还是有一段距离的。下一篇文章,我会根据我自己研发的sdk去配置真正能提供给第三方接入的sdk。我是一名Android工程师,能开发app,也能开发SDK。我为自己加油!

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ProGuard是一种用于保护Java代码的工具,可以对代码进行混淆、优化和压缩,以减少代码的大小并增强代码的安全性。当使用ProGuard混淆Java代码后,生成的jar并不能直接使用,需要重新进行打。 在混淆后的代码存储到D:/proguard/target后,需要进行重新打。可以使用命令行或ProGuard的GUI进行操作。 如果选择使用命令行,可以输入以下命令进行重新打:java -jar proguard.jar @proguard.pro。其中,proguard.pro是ProGuard的配置文件,可以通过GUI进行配置文件的设置并保存到D:/proguard/config/proguard-for-jar。 重新打后,生成的jar就可以直接使用了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [使用Proguard对FAT JAR进行代码混淆](https://blog.csdn.net/ttyy1112/article/details/90300445)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [ProGuard对java jar实现混淆加密](https://blog.csdn.net/u010142437/article/details/72819771)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阮小鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值