自己辛苦写的程序总不希望被别人轻松反编译后修改成他人。我用的是proguard混淆。在网上找了许多文章,试了许多次,总算混淆成功了一回。
先提提我的失败经验:1.网上说需要proguard.cfg文件,我看是不需要的。开始我找关天,还手工生成此文件,也没有用。最终是不需要它的。
2.还有人说要打开项目目录下project.properties文件,去掉#proguard.config=${sdk.dir}\tools\proguard\proguard-android.txt:proguard-project.txt前的#号。我试了也没有用。
3.在proguard目录下有一个proguardgui.bat,大概可以脱离eclipse单独用来混淆。结果搞头天,不是说有duplicate class definitions,就是说有 Warning: XXX: can't find referenced class。即使先生成配置文件apk.pro,然后在apk.pro中添加 -ignorewarnings,再加载此配置文件,然后生成没有错了,结果生成的结果为空。啥也没有。唉,水太深。搞不定。
最终在网上看到有文章说:
如果通过Run as -> Android application生成的bin\*.apk是没有效果的,要通过export来生成!天杀的!
不知道正统的android教材有没有讲到要和export来生成程序,我是半路出家的,看到run可以直接生成apk就一直以为这样就行了。咳咳,学艺不精害死人啊。
下面再讲讲成功的方法,知道路子就很简单了。
前提:我用的环境是adt-bundle-windows-x86,这是一个已经包含eclipse+adk+proguard的IDE,只需要设置一下java目录就能用了。其它环境我就不知道了。
1.上面说的第2条,还是要的。
proguard.config=你的sdk/tools/proguard/proguard-android.txt:proguard-project.txt
我特地试了一下,前面加了#生成的结果就没有混淆。
2.创建一个新android程序,什么代码也不写----这样可以容易混淆,不出现其它错误。
在菜单上选择file->Export,然后选择Android->Export Android Application,
3.如果第一次这么做,需要创建一个key,我暂时也不知道干嘛用的,反正选择一个目录,定义一个新的名称,再输入密码,它就保存下来。后面还要输入一大堆信息创建这个key.
4.再次输入密码创建应用程序,然后输入最终的文件名。
5.完成。
你会发现,生成的apk,比原来小多了。用反编译工具查看,所有的类名,都成了a,b,c,d。
大功告成。
posted on 2013-05-18 13:56
游子 阅读(5623)
评论(4) 编辑 收藏 引用 所属分类:
原创技术 、
软件