`

Android Ant编译时候进行混淆

阅读更多

版权所有,欢迎转载,转载请注明 : SinFrancis  http://mdev.cc  

 

 

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

 

 

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

 

定义proruard4.4 的home :

 

<property name="proguard-home" value="D:/eclipsetools/proguard4.4/lib"/> 
 

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

 

	<!--Execute proguard class flies-->
	<target name="optimize">
		<jar basedir="${outdir-classes}" destfile="temp.jar"/>
		<java jar="${proguard-home}/proguard.jar" fork="true" failonerror="true">
			<jvmarg value="-Dmaximum.inlined.code.length=32"/>
			<arg value="-injars temp.jar"/>
			<arg value="-outjars optimized.jar"/>
			<arg value="-libraryjars ${android-jar}"/>
		
			<!--  <arg value="-libraryjars ${external-libs}/*.jar"/>-->
			<arg value="-dontpreverify"/>
			<arg value="-dontoptimize"/>
			<arg value="-dontusemixedcaseclassnames"/>
			<arg value="-repackageclasses ''"/>
			<arg value="-allowaccessmodification"/>
			<!--<arg value="-keep public class ${exclude-activity}"/>-->
			<!--<arg value="-keep public class ${exclude-provider}"/>-->
			<arg value="-keep public class * extends android.app.Activity"/>
			<arg value="-keep public class * extends android.content.ContentProvider"/>
			<arg value="-keep public class * extends android.view.View"/>

			<arg value="-keep public class * extends android.preference.Preference"/> 			<arg value="-optimizationpasses 7"/>
			<arg value="-verbose"/>
			<arg value="-dontskipnonpubliclibraryclasses"/>
			<arg value="-dontskipnonpubliclibraryclassmembers"/>
		</java>
		<delete file="temp.jar"/>
		<delete dir="${outdir-classes}"/>
		<mkdir dir="${outdir-classes}"/>
		<unzip src="optimized.jar" dest="${outdir-classes}"/>
		<delete file="optimized.jar"/>
	</target>
 

 

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

 

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

 

<antcall target="optimize"/>

 

这样既可。

 

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

 

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

 

等相关的错误。

 

 

 

 

分享到:
评论
4 楼 sinfrancis 2011-03-22  
GaoMatrix 写道
您好 我按照您说的做的 有几点不太明白
<antcall target="optimize"/>
这个释放到哪里?编译的 target是指
<!-- Compile this project's .java files into .class files. -->
<target name="compile" depends="dirs, resource-src, aidl">
<javac encoding="ascii" target="1.6" debug="true" extdirs="" srcdir="." destdir="${outdir-classes}" bootclasspath="${android-jar}">
<classpath>
<fileset dir="${external-libs}" includes="*.jar" />
</classpath>
</javac>
</target>
这里面么,<target name="dex" depends="compile">看到网上有说在这里加的
还有就是我运行的时候出现:
类重复: com.xxx.R
       [javac] public final class R {

建议你使用最新的ANDROID SDK生成build.xml ,会自动帮你混淆,不需要任何的混淆代码了。
3 楼 GaoMatrix 2011-03-20  
您好 我按照您说的做的 有几点不太明白
<antcall target="optimize"/>
这个释放到哪里?编译的 target是指
<!-- Compile this project's .java files into .class files. -->
<target name="compile" depends="dirs, resource-src, aidl">
<javac encoding="ascii" target="1.6" debug="true" extdirs="" srcdir="." destdir="${outdir-classes}" bootclasspath="${android-jar}">
<classpath>
<fileset dir="${external-libs}" includes="*.jar" />
</classpath>
</javac>
</target>
这里面么,<target name="dex" depends="compile">看到网上有说在这里加的
还有就是我运行的时候出现:
类重复: com.xxx.R
       [javac] public final class R {
2 楼 hemowolf 2010-12-28  
没成功过。留个记号
1 楼 wxw404 2010-10-24  
想混淆一下code 可发现adt 没这功能
还得用ant
看到兄弟的帖子 学习了

相关推荐

    android2.3 eclipse ant混淆

    本文将深入探讨“android2.3 eclipse ant混淆”这一主题,结合标签“源码”和“工具”,我们将关注如何在Android 2.3版本中,使用Eclipse集成开发环境以及Ant构建工具进行Proguard混淆。 首先,让我们了解混淆的...

    android ant 多渠道混淆打包

    在Android开发过程中,为了提高应用的安全性和优化代码,开发者通常会使用ProGuard工具进行代码混淆。而当需要针对多个渠道(如不同的应用市场)进行打包时,手动操作不仅繁琐且容易出错。这时,我们可以利用Ant构建...

    ant proguard 混淆编译 之Eclipse-Idea

    在Android开发中,为了保护应用的安全性和优化代码,开发者通常会使用ProGuard工具进行混淆编译。本篇文章将聚焦于如何在Eclipse和IntelliJ IDEA(Idea)这两个不同的集成开发环境中配置并使用ProGuard,以实现对Ant...

    ant 多渠道包混淆 签名

    在Android应用开发中,构建多渠道包和进行代码混淆及签名是重要的步骤,尤其是在发布阶段。`Ant`是一个开源的Java构建工具,它允许开发者通过XML配置文件来编译、测试和打包应用。在这个场景中,`Ant`被用于创建针对...

    使用ant打包android

    在Android开发过程中,Ant是一个非常重要的工具,它是一个开源的Java构建系统,广泛用于自动化编译、测试和部署Java应用程序,包括Android应用。本篇文章将详细介绍如何使用Ant来打包Android应用,以及涉及到的相关...

    ant proguard 混淆编译 之Netbeans

    在Android应用开发中,为了保护代码安全和优化应用程序,我们经常使用ProGuard工具进行混淆、压缩和优化。本文主要探讨如何在NetBeans环境下配置Ant构建系统来实现ProGuard的混淆编译过程。 首先,理解ProGuard是...

    ant混淆打包

    在Android开发过程中,为了保护应用源代码的安全,开发者通常会使用混淆工具对APK进行混淆,使得逆向工程变得困难。在本场景中,我们关注的是使用Apache Ant自动化构建工具进行混淆打包的过程。Ant是一个基于Java的...

    android ant test

    本篇将详细讲解"android ant test",即如何使用Ant进行Android应用的构建与测试。 Ant是一个由Apache基金会维护的Java构建工具,它基于XML来定义构建过程。在Android项目中,通过Ant脚本,我们可以执行编译、打包...

    使用Ant批量多渠道打包Android

    本资源将详细介绍如何使用Ant进行批量多渠道打包Android应用。 首先,你需要在你的项目中集成Ant。这通常意味着在项目根目录下创建一个名为`build.xml`的Ant构建文件。这个文件是Ant的配置中心,它定义了构建过程中...

    android使用ant自动构建示例

    本示例将详细介绍如何在Android项目中利用Ant进行自动构建。 首先,我们需要理解Ant的基本概念。Ant是一个基于Java的任务驱动的构建系统,它的核心是build.xml文件,这个文件包含了构建项目的各种任务和规则。在...

    android ant多渠道打包

    Ant是Android的一种构建工具,它可以自动化编译、测试和打包过程,使得多渠道打包变得更为高效。下面将详细介绍如何使用Ant进行Android的多渠道打包,以及涉及到的相关知识点。 首先,理解Ant。Apache Ant是一种...

    android混淆与签名与反编译方法

    在Android中,通常使用ProGuard工具进行混淆。首先,确保你使用的是最新版本的Ant(至少1.8以上),并且更新了`android-sdk-tool`,包含所需的SDK工具和平台。运行`android update project -p (path) -t (sdk id)`...

    android ant build脚本代码

    在Android中,`Ant`用于生成APK文件,包括编译源码、资源处理、签名和优化等步骤。 1. **基本结构** - `build.xml`: 这是`Ant`构建脚本的核心文件,包含了所有构建任务的定义。在`Android`项目中,通常会有一个...

    ant修改参数重新编译的 Proguard 4.7

    在Android应用程序开发过程中,为了提高代码的安全性和优化应用性能,开发者通常会使用混淆工具对代码进行混淆。Proguard是一款强大的Java字节码混淆器、优化器和裁剪器,它可以有效地减小APK的大小,保护源代码免受...

    通过Ant发布Android到手机的例子

    在Android开发过程中,自动化构建工具如Ant被广泛用于编译、打包和发布应用程序。本教程将详细介绍如何使用Ant来发布Android应用到手机上,包括设置环境、编写build.xml脚本以及执行编译和安装的过程。 首先,我们...

    Android代码混淆及签名.doc

    Android 代码混淆是指对 Android 应用程序的源代码进行混淆处理,以防止别人反编译和盗取源代码。代码混淆可以使得反编译变得困难,但是不能完全阻止反编译。 Android 代码混淆可以通过两种方式实现,一种是直接...

    Android项目的Ant配置

    在Android开发中,Ant是一个非常重要的工具,它是一个开源的构建工具,可以帮助开发者自动化构建、编译和测试项目。在Android项目中,Ant通常用于替代Eclipse或Android Studio的Gradle构建系统,尤其是在早期版本的...

    使用ant构建android自动化打包实例源码

    - 签名与优化:如果需要发布,Ant还需要对APK进行签名和优化,确保其能在Android设备上安装和运行。 6. **使用博客资源** - 提供的博客地址(http://blog.csdn.net/javazejian)可能包含了更详细的步骤和示例,...

    Android笔记之:App自动化之使用Ant编译项目多渠道打包的使用详解

    使用Ant编译时,需要确保Library项目的输出被正确地链接到Project中。在`build.xml`中,可以通过`import`任务引入其他项目的构建脚本,并在Project的构建任务中引用Library的输出。 4. 多渠道打包 多渠道打包是指...

    安卓自动打包ant auto build Android Package

    7. **ProGuard**:Ant还可以配合ProGuard进行代码混淆,以提高应用的安全性,减少代码被逆向工程的可能性。 8. **多版本构建**:通过Ant,可以方便地为不同的设备配置生成多个APK,例如针对不同API级别或硬件特性的...

Global site tag (gtag.js) - Google Analytics