引用: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代码
  1. <propertyname="proguard-home"value="D:\\ProgramFiles\\proguard4.2\\lib\\"/>
  2. <targetname="optimize"depends="compile">
  3. <jarbasedir="${outdir-classes}"destfile="temp.jar"/>
  4. <javajar="${proguard-home}/proguard.jar"fork="true"failonerror="true">
  5. <jvmargvalue="-Dmaximum.inlined.code.length=32"/>
  6. <argvalue="-injarstemp.jar"/>
  7. <argvalue="-outjarsoptimized.jar"/>
  8. <argvalue="-libraryjars${android-jar}"/>
  9. <!--<argvalue="-libraryjars${library-jar}/some_lib_used.jar"/>-->
  10. <argvalue="-dontpreverify"/>
  11. <argvalue="-dontoptimize"/>
  12. <argvalue="-dontusemixedcaseclassnames"/>
  13. <argvalue="-repackageclasses''"/>
  14. <argvalue="-allowaccessmodification"/>
  15. <argvalue="-keeppublicclasscom.iwidsets.WidsetsActivity"/>
  16. <!--<argvalue="-keeppublicclasscom.just2me.obfapp.receiver.*"/>-->
  17. <argvalue="-optimizationpasses7"/>
  18. <argvalue="-verbose"/>
  19. <argvalue="-dontskipnonpubliclibraryclasses"/>
  20. <argvalue="-dontskipnonpubliclibraryclassmembers"/>
  21. </java>
  22. <deletefile="temp.jar"/>
  23. <deletedir="${outdir-classes}"/>
  24. <mkdirdir="${outdir-classes}"/>
  25. <unzipsrc="optimized.jar"dest="${outdir-classes}"/>
  26. <deletefile="optimized.jar"/>
  27. </target>

注意:keep public class com.iwidsets.WidsetsActivity需改成你的主Activity

并修改target dex

Xml代码
  1. <!--Convertthisproject's.classfilesinto.dexfiles.-->
  2. <targetname="dex"depends="compile,optimize">
  3. <echo>Convertingcompiledfilesandexternallibrariesinto${out-folder}/${dex-file}...</echo>
  4. <applyexecutable="${dx}"failonerror="true"parallel="true">
  5. <argvalue="--dex"/>
  6. <argvalue="--output=${intermediate-dex-location}"/>
  7. <argpath="${outdir-classes-location}"/>
  8. <filesetdir="${external-libs-folder}"includes="*.jar"/>
  9. </apply>
  10. </target>

更多相关文章

  1. Android(安卓)如何关闭Navigation Bar
  2. Android知识要点整理(2)----- 应用资源
  3. Android(安卓)8.0 Adaptive Icon特性 for Unity适配教程
  4. android 4.0 全屏 屏蔽下面的status bar
  5. Android(安卓)为apk文件签名,增加修改系统时间等权限
  6. android中自定义service的详解(例子)
  7. android的文件系统结构
  8. Android——4.2 - 3G移植之路之usb-modeswitch (二)
  9. Android(安卓)L Settings实现

随机推荐

  1. Android(安卓)Q 深色主题
  2. Coco2d-x从Win32移植到Android
  3. Android(安卓)-- 检测耳机插入状态
  4. Android 6.0后强制弹出权限
  5. Android 去掉title bar的3个方法
  6. 联系人头像 android
  7. 一个android悬浮窗的语音识别demo
  8. Android获取手机中的所有音乐地址
  9. android 屏幕截屏
  10. Android学习07-----事件处理(2)单选按钮