Android有关SDK生成的jar包的加密与混淆
来源:互联网 发布:伸张正义的视频 知乎 编辑:程序博客网 时间:2024/06/15 15:30
http://blog.csdn.net/Code_Bird/article/details/47946151?ref=myread
Android有关SDK生成的jar包的加密与混淆
最近公司要求对自己开发的SDK生成的jar包进行加密与混淆,之前也是小白,经过了一番研究,完成了这个需求,这里做个小小的总结,希望能对一些朋友起到些帮助作用,这里主要是理论。
先说一个心得:
1.jar包是需要导入项目中供别人使用的,class文件必须具备一定的规范才能被JVM识别,从而正确的被导入使用。加密是不可行的,因为虽然被加密的class文件虽然不能被gd_gui反编译,但是如果不解密的话,是无法被JVM识别,jar无法正常被导入,所以选择混淆处理。
这里进入正题:
我使用的常用的proguard工具进行混淆,注意较低版本的混淆器的配置文件名为proguard.mf。较新版本的配置文件是proguard-project.txt和project.properties。我们基本是后者,其实差别不大,如果要将项目打包成apk时,对其混淆,只需要修改配置文件,再Export导出apk,JVM会在执行配置文件时,混淆器会按照配置文件的要求,对代码进行混淆,但这个方法并不能实现我们混淆sdk的要求,这里我们就需要使用Android sdk里带的tool:proguardgui.bat这个图形化工具,通过设置,生成一个.pro配置文件(当然大神也可以手写),再导入这个配置文件,手动的对jar包进行混淆。(工具目录大概在这个位置:E:\sdk\tools\proguard\bin\proguardgui.bat),工具的使用教程网上有很多我就不多说了,自己去搜下,按流程走就行。
这里推荐几个相关链接:
http://m.blog.csdn.net/blog/xiangxue336/22720963
http://m.blog.csdn.net/blog/xiangxue336/22720963
这里要特别注意容易出错的地方:
1.在导入依赖的库时,有时会出现这个错误:一堆Warning:com.turing.androidsdk.*****.****:can't find referenced class java.util.List的警告,这是因为你少倒入了sdk里的一个jar包,找到导入即可。
2.如果你对全局混淆,就必须保留下来你要对开放的类名和接口等名字,不被混淆,这就是上面说的识别规范的问题,否则,导出的jar包将毫无意义,无法被JVM正确识别,无法正常使用,报错图片如下:
解决方法:在生成.pro混淆配置文件时,必须去了解下proguard的代码语法,手动添加代码keep住我们要保留的类,接口,方法(后来发现图形化也可以添加),否则会报上面这个错误,这个网上很多可以自己去搜下学习下,代码格式大致这个样子:
-keep classcom.turing.androidsdk.voice.* {
public <fields>;
public <methods>;
*** set*(***);
*** get*();
}
这里附上个代码连接:
http://www.trinea.cn/android/proguard-grammar/
导入导入配置文件后,混淆成功,反编译看下效果,如下:
混淆成功,结束。
- Android有关SDK生成的jar包的加密与混淆
- Android有关SDK生成的jar包的加密与混淆
- android studio 生成混淆的jar包
- Ant混淆打包生成SDK的JAR包
- Android jar包的混淆
- 混淆Android的jar包
- Android项目将生成的jar包混淆
- android studio如何生成带混淆的jar包
- android混淆生成jar包
- 如何生成Android项目的jar包以及jar包的混淆
- eclipse Android jar包的打包与混淆
- Android JAR包的生成与调用
- 使用android studio生成jar包,以及带混淆的jar
- 混淆Android JAR包的方法
- Android打包出的jar包混淆
- 混淆Android JAR包的方法
- 混淆Android JAR包的方法
- 混淆Android JAR包的方法
- 经典算法研究系列:七、深入浅出遗传算法
- Protect Your Flash Files From Decompilers by Using Encryption
- android 欢迎界面
- Leetcode: Delete Node in a Linked List
- 关于句柄
- Android有关SDK生成的jar包的加密与混淆
- java面试总结
- HDU 5305 Friends DFS
- 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
- UIButton 点击传递两个参数的实现
- DevExpress Universal Subscription v15.1.6发布[附下载]
- The depreciation accelerate the plywood export
- Cart分类树算法之原理篇
- ! [rejected] master -> master (non-fast-forward)(有推荐视频)