防止 apk反编译 jocky-- java混淆代码 (转至:http://my.oschina.net/f839903061/blog/72554)

1、下载jocky,解压后把整个文件夹复制到Eclipse的plugin目录。
2、重启Eclipse,在项目上点右键,如果出现jocky菜单,则安装成功。

 

3、在项目上点右键,选菜单jocky->jocky setting,弹出菜单后设置如图

 

 

 

 

4、点ok后,将在项目的根目录下生成一个jocky_build.xml文件,事实上是一个ant build文件。打开这个文件,作适当修改
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- WARNING: Jocky autogenerated file. 
   Any modifications will be overwritten.
-->
<project basedir="." default="build" name="iSzmap.Android.public.jocky">
   <property name="jocky.jar" value="D:\eclipse-jee-galileo-SR1-win32-2\eclipse\plugins\org.apusic.jocky_1.0.3\jocky.jar"/>
   <property name="jocky.output.dir" value="iszmap"/>
   <property name="jocky.scramble.level" value="package"/>
   <property name="target" value="1.5"/>
   <path id="project.classpath">
   <pathelement location="bin"/>
  <pathelement location="D:/android-sdk-windows-1.5_r3/platforms/android-1.5/android.jar"/>
   </path>
   <target name="init">
   <jocky jar="${jocky.jar}" level="${jocky.scramble.level}"/>
   <mkdir dir="${jocky.output.dir}"/>
   <mkdir dir="${jocky.output.dir}/bin"/>
   </target>
   <target name="clean">
   <delete dir="${jocky.output.dir}/bin"/>
   <delete dir="${jocky.output.dir}"/>
   </target>
   <target depends="init" name="build">
   <echo message="${ant.project.name}: ${ant.file}"/>
   <jocky enable="true"/>
   <javac destdir="${jocky.output.dir}/bin" target="${target}" encoding="UTF-8">
   <src path="src/com/iszmap/android/map"/>
   <classpath refid="project.classpath"/>
   </javac>
   </target>
</project>


注意红色的部分,第一部分是添加编译时需要的额外的类包;第二部分是设定java源文件的编码,如果您的文件中有中文的话,必须设定编码;第三部分是设定源文件的目录,因为有时候我们只想输出src目录下的部分包而不是全部。

5、保存后选jocky-jocky Now就可以进行混码了。

混码后的class文件可以通过命令进行打包,或用winrar进行压缩,注意必须压成.zip文件而不是.rar文件。

二、
使用jocky的时候,如果你的java文件使用了utf-8编码,而windows默认是gbk编码,可能会出现"unmappable character for encoding GBK"错误而导致jocky不能使用的情况。可以通过修改jocky_build.xml中的javac段,为其添加encoding="UTF-8"就可以解决这个问题了。
这个问题的实质原因是因为ant的javac使用了默认编码(如果你使用windows xp中文版,默认编码就是GBK),从而导致编码不一致。
        <javac destdir="${jocky.output.dir}/WebRoot/WEB-INF/classes" target="${target}" encoding="UTF-8">
            <src path="src"/>
            <classpath refid="project.classpath"/>
        </javac>
jocky下载:

http://www.pudn.com/downloads133/sourcecode/others/detail567839.html

当你将这些都搞到了之后,运行你的android项目,然后从bin文件夹中拷贝出你的apk文件,用我上一章说的apk反编译一下,查看是不是有一大堆的不搭边的.java文件,这表示被混淆了,祝你好运,如果成功的话如图所示:

posted @ 2014-07-03 14:24  kobe8  Views(445)  Comments(0Edit  收藏  举报