android代码混淆
《Obfuscate an Android application》 这篇文章的作者介绍了如何在Android平台下混淆程序,并且给出ant的build.xml文件,经过自己的测试,发现里面少了一些target项,在Eclips会出错,后来结合zxing开源项目的build.xml文件,终于混淆成功,项目包减少了不少。
这里主要提一些注意事项,不提供源代码
1、创建build.xml文件
直接在项目的目录下新建一个名为build.xml的文件
2、创建Ant打包方式
项目 –> properties –> builders –> new –> ant builder
接着Buildfile选择项目build.xml文件,Base Dir选择项目目录就行了,记得勾上你的builders
3、build.xml文件修改
zxing这个文件没有加入混淆包选项,所以得做一些修改,如下示例
注意:keep public class com.iwidsets.WidsetsActivity需改成你的主Activity
并修改target dex
这里主要提一些注意事项,不提供源代码
1、创建build.xml文件
直接在项目的目录下新建一个名为build.xml的文件
2、创建Ant打包方式
项目 –> properties –> builders –> new –> ant builder
接着Buildfile选择项目build.xml文件,Base Dir选择项目目录就行了,记得勾上你的builders
3、build.xml文件修改
zxing这个文件没有加入混淆包选项,所以得做一些修改,如下示例
01.
<
property
name
=
"proguard-home"
value="D://Program Files//proguard4.2
02.
<target
name
=
"optimize"
depends
=
"compile"
>
03.
<
jar
basedir
=
"${outdir-classes}"
destfile
=
"temp.jar"
/>
04.
<
java
jar
=
"${proguard-home}/proguard.jar"
fork
=
"true"
failonerror
=
"true"
>
05.
<
jvmarg
value
=
"-Dmaximum.inlined.code.length=32"
/>
06.
<
arg
value
=
"-injars temp.jar"
/>
07.
<
arg
value
=
"-outjars optimized.jar"
/>
08.
<
arg
value
=
"-libraryjars ${android-jar}"
/>
09.
<!-- <arg value="-libraryjars ${library-jar}/some_lib_used.jar"/> -->
10.
<
arg
value
=
"-dontpreverify"
/>
11.
<
arg
value
=
"-dontoptimize"
/>
12.
<
arg
value
=
"-dontusemixedcaseclassnames"
/>
13.
<
arg
value
=
"-repackageclasses ''"
/>
14.
<
arg
value
=
"-allowaccessmodification"
/>
15.
<
arg
value
=
"-keep public class com.iwidsets.WidsetsActivity"
/>
16.
<!-- <arg value="-keep public class com.just2me.obfapp.receiver.*"/> -->
17.
<
arg
value
=
"-optimizationpasses 7"
/>
18.
<
arg
value
=
"-verbose"
/>
19.
<
arg
value
=
"-dontskipnonpubliclibraryclasses"
/>
20.
<
arg
value
=
"-dontskipnonpubliclibraryclassmembers"
/>
21.
</
java
>
22.
<
delete
file
=
"temp.jar"
/>
23.
<
delete
dir
=
"${outdir-classes}"
/>
24.
<
mkdir
dir
=
"${outdir-classes}"
/>
25.
<
unzip
src
=
"optimized.jar"
dest
=
"${outdir-classes}"
/>
26.
<
delete
file
=
"optimized.jar"
/>
27.
</
target
>
并修改target dex
01.
<!-- Convert this project's .class files into .dex files. -->
02.
<
target
name
=
"dex"
depends
=
"compile,optimize"
>
03.
<
echo
>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</
echo
>
04.
<
apply
executable
=
"${dx}"
failonerror
=
"true"
parallel
=
"true"
>
05.
<
arg
value
=
"--dex"
/>
06.
<
arg
value
=
"--output=${intermediate-dex-location}"
/>
07.
<
arg
path
=
"${outdir-classes-location}"
/>
08.
<
fileset
dir
=
"${external-libs-folder}"
includes
=
"*.jar"
/>
09.
</
apply
>
10.
</
target
>