ant打包和jar包混淆

Posted yxysuanfa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ant打包和jar包混淆相关的知识,希望对你有一定的参考价值。

Ant是一种基于Java的build工具。相似于c语言中的makefile,这里做一记录。方便后面查看。

<?xml version="1.0" encoding="UTF-8"?>  
<project name="vailidategame" default="yguard" basedir=".">  
    <property name="src" value="${basedir}/src" />  
    <property name="lib" value="${basedir}/lib" /> 
    <property name="build" value="${basedir}/build" />  
    <property name="build.class" value="${build}/classes" />
	<property name="app.name" value="FrameWork" />  
    <property name="app.jar" value="${app.name}.jar" /> 
    <property name="obfuscationlog" value="${build}"/>
    <property name="obf.jar" value="${app.name}_obf.jar" />
    <property name="obfjarpath" value="${basedir}/lib"/>
    <property name="shrinklog" value="${project_name}_shrinklog.xml"/>
    <property name="renamelog" value="${project_name}_renamelog.xml"/>
    <!--请将以下的路径改为你本地的路径-->  
    <property name="webserver" value="D:\build-tomcat\webapps" /> 
      
    <!--定义CLASSPACH,编译时用到你外部增加的包-->  
   <!--  <path id="classpath">  
        <pathelement location="${src}" /> 
        <fileset dir="${lib}" includes="***.jar" />  
    </path> -->
    
    <!--删除任务-->  
    <target name="clean" description="删除">  
        <echo message="删除文件夹" />  
        <delete dir="${build}" />  
    </target>  
  
    <!--创建一个暂时文件夹-->  
    <target name="init" description="创建文件夹" depends="clean">  
        <echo message="创建文件夹--以运行" />  
        <mkdir dir="${build.class}" />  
    </target>  
  
    <!-- 编译 -->
    <target name="compile" description="開始编译" depends="init">
           <echo message="生成jar開始……" />  
    	   <javac srcdir="src" destdir="${build.class}">
		    	 <!-- <classpath> 
		             <fileset dir="lib"> 
		                 <include name="**/*.jar"/> 
		             </fileset>
		         </classpath>  -->
		   </javac>  
    </target>
    <!-- 打成jar包 -->
    <target name="generjar" description="打包" depends="compile">
         <echo message="打成jar包"/>
          <jar jarfile="${build}/${app.jar}" basedir="${build.class}">
			<!-- <manifest>
	   			<attribute name="Main-Class" value="bean.ant.TestAnt" />
			</manifest> -->
	   	  </jar>
    </target>
    
    <!-- 混淆任务 -->
   <!--  <target name="yguard" depends="generjar">
       <echo message="開始混淆"/>
       <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask" classpath="yguard.jar" />
       <echo message="产生混淆文件"/>
       <yguard>
           <inoutpair in="${build}/${app.jar}" out="${build}/${obf.jar}"/>
       </yguard>
    </target> -->
   
    <target depends="generjar" name="yguard">
      <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask"
      classpath="yguard.jar"/>
      <!-- the following can be adjusted to your needs -->
      <yguard>
        <inoutpair in="${build}/${app.jar}" out="${build}/${obf.jar}"/>
        <shrink logfile="${shrinklog}">
          <keep>
            <class classes="protected"
            methods="protected" fields="protected">
              <patternset>
                <include name="com.subao.validate.**.*"/>
                <!-- <exclude name="com.subao.validate.http.**.*"/> -->
              </patternset>
            </class>
          </keep>
        </shrink>
        <rename logfile="${renamelog}">
          <property name="error-checking" value="pedantic"/>
          <keep>
            <class classes="protected"
            methods="protected" fields="protected">
              <patternset>
                <include name="com.subao.validate.**.*"/>
                <!-- <exclude name="com.subao.validate.http.**.*"/> -->
                <exclude name="com.subao.validate.entity.**.*"/>
              </patternset>
            </class>
          </keep>
        </rename>
      </yguard>
    </target>
</project>  
大概解释一下:

1、上面project标签中的default代表默认运行的入口, basedir代表基准路径。

2、property标签定义变量。

3、target标签中就各自是对应的操作。

相关资源:

yguard混淆:http://download.csdn.net/detail/lxq_xsyu/8149559

jar包混淆工具:http://download.csdn.net/detail/lxq_xsyu/8149539

jar包反编译工具:http://download.csdn.net/detail/lxq_xsyu/8149513
这些工具用起来都特别简单,相关界面截图例如以下:

技术分享


技术分享







以上是关于ant打包和jar包混淆的主要内容,如果未能解决你的问题,请参考以下文章

android studio 代码混淆如何忽略第三方jar包

Eclipse下用ant打包时怎么添加jar包

proguard 不混淆第三方jar包的问题

在Eclipse上打包并使用Proguard工具混淆jar包

Java:使用Ant可以打包出可以通过build.xml直接运行的jar包,但为啥引入了第三方的

利用Ant在mac osx下实现多渠道打包 + 混淆