一个android sdk工程的ant脚本样例

以下脚本只需要修改<!-- you can change it -->部分即可,总共6处,满足大部分的场景,

包括了proguard,工程目录下需要有proguard.cfg文件。

附带一句,如果proguard中要去除debug日志,可以在proguard.cfg文件中加入以下内容:

-assumenosideeffects class android.util.Log {  
    public static *** d(...);  
    public static *** v(...);  
}


 

以下是build.xml的内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<project basedir="." default="release" name="工程名称"><!-- you can change it -->
    <property environment="env"/>
    <property name="ECLIPSE_HOME" value="F:/Tools/Develop/eclipse"/> <!-- you can change it -->
    <property name="ANDROID_SDK_PATH" value="F:/Tools/Develop/android_sdk"/> <!-- you can change it -->
    <property name="debuglevel" value="source,lines,vars"/>
    <property name="vm.target" value="1.6"/>
    <property name="vm.source" value="1.6"/>
    
    <property name="android.target" value="android-17"/> <!-- you can change it -->
    
    <tstamp>
       <format property="TODAY" pattern="yyyy-MM-dd HHmmss" locale="zh_CN"/>
    </tstamp>
    
    <property name="release.home" value="${basedir}/release"/>
    <property name="release.name" value="输出sdk的名称"/> <!-- you can change it -->
    <property name="release.version" value="v1.1.20"/> <!-- you can change it -->

    <property name="release.jar" value="${release.home}/${release.name}-${release.version}.jar"/>

    <!-- debug版本没有用proguard混淆,release版本混淆了 -->

    <property name="debug.jar" value="${release.home}/${release.name}-${release.version}_debug.jar"/>
    
    <property name="proguard.home" value="${ANDROID_SDK_PATH}/tools/proguard"/>
    <property name="proguard.map" value="${release.home}/map_${TODAY}.txt"/> <!-- 输出map,便于问题定位 -->
    
    <property name="android.jar" value="${ANDROID_SDK_PATH}/platforms/${android.target}/android.jar"/>
    
    <path id="Android libraryclasspath">
        <pathelement location="${android.jar}"/>
    </path>
    
    <path id="Android Dependencies.libraryclasspath"/>
    <path id="Android Private Libraries.libraryclasspath"/>
    
    <path id="Project.classpath">
        <path refid="Android libraryclasspath"/>
        <path refid="Android Dependencies.libraryclasspath"/>
        <path refid="Android Private Libraries.libraryclasspath"/>
        <pathelement location="${basedir}/classes"/>
    </path>
    
    <target name="init">
        <mkdir dir="${release.home}"/>
        <mkdir dir="${release.home}/classes"/>
        <copy includeemptydirs="false" todir="${release.home}/classes">
            <fileset dir="${basedir}/src">
                <exclude name="**/*.launch"/>
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
        
        <copy includeemptydirs="false" todir="${release.home}/classes">
            <fileset dir="${basedir}/gen">
                <exclude name="**/*.launch"/>
                <exclude name="**/*.java"/>
            </fileset>
        </copy>

       

        <!-- copy assets目录下的内容,可以打包到sdk中 -->

        <copy includeemptydirs="false" todir="${release.home}/classes/assets" includeEmptyDirs="false">
            <fileset dir="${basedir}/assets">
                <include name="**/**" />
            </fileset>
        </copy>
    </target>
    
    <target name="clean">
        <delete dir="${release.home}" failοnerrοr="false"/>
    </target>
    
    <target name="build" depends="clean, init">
        <echo message="${ant.project.name}: ${ant.file}"/>
        <javac debug="true" debuglevel="${debuglevel}" destdir="${release.home}/classes" includeantruntime="false"
            source="${vm.source}" target="${vm.target}" encoding="utf-8">
            <src path="src"/>
            <src path="gen"/>
            <classpath refid="Project.classpath"/>
        </javac>
        
        <jar destfile="${debug.jar}" strict="fail">
            <fileset dir="${release.home}/classes">  
                <include name="**/*.class"/>
                <include name="assets/**"/>
                </fileset>  
            <manifest>
                <attribute name="Implementation-Title" value="${release.project}-${release.version}.jar" />
                <attribute name="Implementation-Version" value="${release.version}" />
                <attribute name="Implementation-Vendor" value="huawei"/>
                <attribute name="BuildTime" value="${current_time}" />
            </manifest>
        </jar>
    </target>
    
    <target name="release" unless="nooptimize" depends="build">
        <echo>Proguard ${release.name}...</echo>
        <java jar="${proguard.home}/lib/proguard.jar" fork="true" failοnerrοr="true">
            <jvmarg value="-Dmaximum.inlined.code.length=16" />
            <arg value="@${basedir}/proguard.cfg" />
            <arg value="-injars ${debug.jar}" />
            <arg value="-outjars ${release.jar}" />
            <arg value="-libraryjars ${android.jar}" />
            <arg value="-printmapping ${proguard.map}" />
        </java>
    </target>
</project>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值