关于ANT 编译和脚本请查看 : http://sinfrancis.javaeye.com/blog/721582

这里使用的是proguard4.4 ,在原有的ANT脚本上加入以下代码:

定义proruard4.4 的home :

Xml代码
  1. <propertyname="proguard-home"value="D:/eclipsetools/proguard4.4/lib"/>

加入混淆的target配置到build.xml中去:

Xml代码
  1. <!--Executeproguardclassflies-->
  2. <targetname="optimize">
  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${external-libs}/*.jar"/>-->
  10. <argvalue="-dontpreverify"/>
  11. <argvalue="-dontoptimize"/>
  12. <argvalue="-dontusemixedcaseclassnames"/>
  13. <argvalue="-repackageclasses''"/>
  14. <argvalue="-allowaccessmodification"/>
  15. <!--<argvalue="-keeppublicclass${exclude-activity}"/>-->
  16. <!--<argvalue="-keeppublicclass${exclude-provider}"/>-->
  17. <argvalue="-keeppublicclass*extendsandroid.app.Activity"/>
  18. <argvalue="-keeppublicclass*extendsandroid.content.ContentProvider"/>
  19. <argvalue="-keeppublicclass*extendsandroid.view.View"/>
  20. <argvalue="-keeppublicclass*extendsandroid.preference.Preference"/><argvalue="-optimizationpasses7"/>
  21. <argvalue="-verbose"/>
  22. <argvalue="-dontskipnonpubliclibraryclasses"/>
  23. <argvalue="-dontskipnonpubliclibraryclassmembers"/>
  24. </java>
  25. <deletefile="temp.jar"/>
  26. <deletedir="${outdir-classes}"/>
  27. <mkdirdir="${outdir-classes}"/>
  28. <unzipsrc="optimized.jar"dest="${outdir-classes}"/>
  29. <deletefile="optimized.jar"/>
  30. </target>

注意:-keep这个参数是表示哪些类不被混淆,具体查看progurard的文档。这里凡是在xml文件中配置的文件均不可混淆,否则运行时候会找不到类的。

在编译的 target中加入 调用混淆target的命令 :

Xml代码
  1. <antcalltarget="optimize"/>

这样既可。

如果你使用了xmlpull类库的话,混淆的时候请不要加入到源代码中,android的类库中已经包含了 xmlpull,否则的话混淆是无法成功的,会出现

Warning: library class android.content.res.XmlResourceParser extends or implements program class org.xmlpull
.v1.XmlPullParser

等相关的错误。

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 一款常用的 Squid 日志分析工具
  3. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  4. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  5. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  6. 【翻译】Android(安卓)Support Library Setup(三)
  7. Android(安卓)studio --1-- 从普通IntelliJ项目的迁移到Gradle
  8. android 将一些信息保存到本地,以后更新版本或者替换之后,数据在新
  9. Android多国语言values文件夹命名

随机推荐

  1. mssql 数据库表行转列,列转行终极方案
  2. SQL效率提升之一些SQL编写建议并有效利用
  3. SQL语句实现删除ACCESS重复记录的两种方
  4. 教你几种在SQLServer中删除重复数据方法
  5. 数据结构简明备忘录 线性表
  6. SQL对冗余数据的删除重复记录只保留单条
  7. 一次SQL调优数据库性能问题后的过程(300W
  8. 根据日期知道当天是星期几的手动计算方法
  9. SQLServer 附加数据库后出现只读或失败的
  10. SQL 合并多行记录的相同字段值