android混淆(Obfuscate)
16lz
2021-01-26
引用:http://fonter.iteye.com/blog/489728
《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这个文件没有加入混淆包选项,所以得做一些修改,如下示例
Xml代码- <propertyname="proguard-home"value="D:\\ProgramFiles\\proguard4.2\\lib\\"/>
- <targetname="optimize"depends="compile">
- <jarbasedir="${outdir-classes}"destfile="temp.jar"/>
- <javajar="${proguard-home}/proguard.jar"fork="true"failonerror="true">
- <jvmargvalue="-Dmaximum.inlined.code.length=32"/>
- <argvalue="-injarstemp.jar"/>
- <argvalue="-outjarsoptimized.jar"/>
- <argvalue="-libraryjars${android-jar}"/>
- <!--<argvalue="-libraryjars${library-jar}/some_lib_used.jar"/>-->
- <argvalue="-dontpreverify"/>
- <argvalue="-dontoptimize"/>
- <argvalue="-dontusemixedcaseclassnames"/>
- <argvalue="-repackageclasses''"/>
- <argvalue="-allowaccessmodification"/>
- <argvalue="-keeppublicclasscom.iwidsets.WidsetsActivity"/>
- <!--<argvalue="-keeppublicclasscom.just2me.obfapp.receiver.*"/>-->
- <argvalue="-optimizationpasses7"/>
- <argvalue="-verbose"/>
- <argvalue="-dontskipnonpubliclibraryclasses"/>
- <argvalue="-dontskipnonpubliclibraryclassmembers"/>
- </java>
- <deletefile="temp.jar"/>
- <deletedir="${outdir-classes}"/>
- <mkdirdir="${outdir-classes}"/>
- <unzipsrc="optimized.jar"dest="${outdir-classes}"/>
- <deletefile="optimized.jar"/>
- </target>
注意:keep public class com.iwidsets.WidsetsActivity需改成你的主Activity
并修改target dex
Xml代码- <!--Convertthisproject's.classfilesinto.dexfiles.-->
- <targetname="dex"depends="compile,optimize">
- <echo>Convertingcompiledfilesandexternallibrariesinto${out-folder}/${dex-file}...</echo>
- <applyexecutable="${dx}"failonerror="true"parallel="true">
- <argvalue="--dex"/>
- <argvalue="--output=${intermediate-dex-location}"/>
- <argpath="${outdir-classes-location}"/>
- <filesetdir="${external-libs-folder}"includes="*.jar"/>
- </apply>
- </target>
更多相关文章
- Android(安卓)如何关闭Navigation Bar
- Android知识要点整理(2)----- 应用资源
- Android(安卓)8.0 Adaptive Icon特性 for Unity适配教程
- android 4.0 全屏 屏蔽下面的status bar
- Android(安卓)为apk文件签名,增加修改系统时间等权限
- android中自定义service的详解(例子)
- android的文件系统结构
- Android——4.2 - 3G移植之路之usb-modeswitch (二)
- Android(安卓)L Settings实现