Android代码混淆
来源:互联网 发布:淘宝抓绒衣 编辑:程序博客网 时间:2024/05/29 13:59
记录下自己在代码混淆过程中遇到的问题:
这两个文件是ADT创建项目时自动生成混淆代码的文件,其中project.properties是控制是否混淆代码,proguard-project.txt是定义混淆规则的。自己瞎翻译了下:
project.properties:
proguard-project.txt:
当project.properties文件中混淆代码的注释被打开后,打包apk的时候,就会进行代码混淆,混淆过程中遇到了不少问题:
1、 找不到proguard-android.txt文件
在sdk目录/tools/下没有proguard文件夹,自己创建了这个文件夹,然后把proguard-android.txt复制过来,后来发现这样是不行的,会报Failed to export application这个错:
把整个proguard文件夹复制到sdk的tools目录下才行,我复制过来的proguard文件夹包含以下文件:
2、 继续打包,继续出现问题
这是没有声明第三方库导致的警告,可以在proguard-project.txt文件里面加上这句忽略这些警告。
-ignorewarnings
忽略警告之后可以打包成功,但是在程序中调用第三方库的地方可能会出现问题,正常情况下应该只混淆自己写的代码就可以了,第三方库没有必要混淆。那么就要在proguard-project.txt文件中声明第三方jar包和指定不混淆第三方jar包以及忽略第三方包导致的警告。
第三方包可以在Android Private Libraries里面找到:
如果不是第三方jar包,而是外部库工程,声明的时候应该是这样:
忽略警告和不混淆跟上面的jar包一样,其中gesture-imageview是工程名。
一个小插曲:
已经忽略了第三方包com.amap.xx的警告,但是com.amap.api.xx的警告还是出来了,不知道为什么:
com.amap.api.mapcore2d.MapMessage类确实是不存在,但是这是第三方包内部的类,只能单独忽略com.amap.api.xx的警告,这样写就没问题了:
3、 继续打包,然后就爆内存了:
上网找解决方案,重新配置eclipse.ini文件,修改如下:
-Xms512m
-Xmx1024m
-XX:MaxPermSize=1024m
第一个是最小的初始化内存,第二个是最大占有内存,第三个是在编译文件时一直占有最大内存。
然后打包成功!反编译出来,代码确实是混淆了,但是测试的时候,发现一个问题,我自己写的一个方法,被混淆器删除了,混淆器混淆的时候,会精简代码,把注释和没有用到的代码删掉,问题是我的方法肯定是用到了的,但是却被删掉了,后来才发现,这个方法是webView里面的javascript调用的本地方法,其实在proguard-project.txt的介绍里面也提醒了要注意这个问题,只是自己没有留意:
所以,还要保留这个类里面的方法:
到这里,代码混淆算是成功了!
- Android 代码混淆,混淆打包
- Android 代码混淆 webview混淆
- [Android]混淆Android代码
- [Android]混淆Android代码
- Android代码混淆------apk文件代码混淆
- android 代码混淆proguard
- Android项目代码混淆
- android 代码混淆总结
- android 代码混淆
- android代码混淆
- 混淆Android代码
- Android代码混淆 反编译
- android 代码混淆
- Android 代码混淆
- android 代码混淆
- Android代码混淆技术
- android 代码混淆
- Android代码混淆
- Ubuntu 给matlab创建快捷方式
- C++ OO设计原则
- 快速排序(quick sort)
- 【概念】为什么有时全表扫描比通过索引扫描效率更高
- Hexagon DSP的所有寄存器
- Android代码混淆
- 嵌入式C语言之---模块化编程
- 《深入理解计算机系统》第二章习题2_66
- 通过Id遍历标签
- POJ 2449 Remmarguts' Date【SPFA】【A*】
- Mysql:操作笔记
- java中接口的概念及使用(补充final修饰符的使用)
- 牛刀小试 - 详细总结Java-IO流的使用
- C++应用程序性能优化学习笔记:C++语言特性的性能分析