使用Android(安卓)Ant在编译时混淆
16lz
2021-01-25
关于ANT 编译和脚本请查看 : http://sinfrancis.javaeye.com/blog/721582
这里使用的是proguard4.4 ,在原有的ANT脚本上加入以下代码:
定义proruard4.4 的home :
Xml代码
- <propertyname="proguard-home"value="D:/eclipsetools/proguard4.4/lib"/>
加入混淆的target配置到build.xml中去:
Xml代码- <!--Executeproguardclassflies-->
- <targetname="optimize">
- <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${external-libs}/*.jar"/>-->
- <argvalue="-dontpreverify"/>
- <argvalue="-dontoptimize"/>
- <argvalue="-dontusemixedcaseclassnames"/>
- <argvalue="-repackageclasses''"/>
- <argvalue="-allowaccessmodification"/>
- <!--<argvalue="-keeppublicclass${exclude-activity}"/>-->
- <!--<argvalue="-keeppublicclass${exclude-provider}"/>-->
- <argvalue="-keeppublicclass*extendsandroid.app.Activity"/>
- <argvalue="-keeppublicclass*extendsandroid.content.ContentProvider"/>
- <argvalue="-keeppublicclass*extendsandroid.view.View"/>
- <argvalue="-keeppublicclass*extendsandroid.preference.Preference"/><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这个参数是表示哪些类不被混淆,具体查看progurard的文档。这里凡是在xml文件中配置的文件均不可混淆,否则运行时候会找不到类的。
在编译的 target中加入 调用混淆target的命令 :
Xml代码- <antcalltarget="optimize"/>
这样既可。
如果你使用了xmlpull类库的话,混淆的时候请不要加入到源代码中,android的类库中已经包含了 xmlpull,否则的话混淆是无法成功的,会出现
Warning: library class android.content.res.XmlResourceParser extends or implements program class org.xmlpull
.v1.XmlPullParser
等相关的错误。
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- 【翻译】Android(安卓)Support Library Setup(三)
- Android(安卓)studio --1-- 从普通IntelliJ项目的迁移到Gradle
- android 将一些信息保存到本地,以后更新版本或者替换之后,数据在新
- Android多国语言values文件夹命名