注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

技术乐土

这是一片技术的乐土

 
 
 

日志

 
 

build.xml-Andorid ant一键多渠道编译  

2013-06-08 18:46:25|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
<?xml version="1.0" encoding="UTF-8"?>

<!--
    
  -->
<project default="batch-pack" name="17KBookReader" basedir=".">


    <property file="app.properties" />
    <!-- -->
    <property name="outdir" value="${basedir}/out-temp" />
    <property name="apk-release-path" value="${basedir}/release" />

    <property name="out.absolute.dir" location="${outdir}" />

    <!-- -->



    <!-- sdk jdk  location-->
    <property name="sdk2.2-folder" value="C:\\Users\\enjoy\\work\\software\\android-sdk-windows" />
    <property name="sdk-folder" value="${sdk2.2-folder}/platforms/android-8" />
    <property name="sdk-tools" value="${sdk2.2-folder}/tools" />
    <property name="platform-tools" value="${sdk2.2-folder}/platform-tools" />
    <property name="proguard-home" value="${sdk-tools}/proguard/lib" />
    <property name="jarsigner" value="C:\\Program Files\\Java\\jdk1.6.0\\bin/jarsigner.exe" />
    <!-- -->
    <property name="outdir-gen" value="${basedir}/gen" />

    <!--  -->
    <property name="resource-dir" value="${basedir}/res" />
    <property name="asset-dir" value="${basedir}/assets" />
    <property name="src-dir" value="${basedir}/src" />


    <!-- -->
    <property name="outdir-classes" value="${outdir}/classes" />
    <property name="out.classes.absolute.dir" location="${outdir-classes}" />

    <!-- -->
    <property name="dex-file" value="classes.dex" />
    <property name="intermediate-dex" value="${out.absolute.dir}/${dex-file}" />

    <!-- -->
    <property name="out-package" value="${apk-dest-path}/single-${BookId}.apk" />




    <!-- -->
    <property name="aapt" value="${platform-tools}/aapt.exe" />
    <property name="aidl" value="${platform-tools}/aidl.exe" />
    <property name="dx" value="${platform-tools}/dx.bat" />
    <property name="adb" value="${platform-tools}/adb.exe" />
    <property name="apk-builder" value="${sdk-tools}/apkbuilder.bat" />
    <property name="android-jar" value="${sdk-folder}/android.jar" />

    <!--  -->
    <property name="resources-package" value="${outdir}/${ant.project.name}" />
    <property name="resources-package-ospath" value="${resources-package}" />
    <property name="out-unsigned-package" value="${outdir}/${ant.project.name}-unsigned.apk" />
    <property name="out-unsigned-package-ospath" value="${out-unsigned-package}" />
    <property name="out-signed-package" value="${outdir}/${ant.project.name}-signed.apk" />
    <property name="out-signed-package-ospath" value="${out-signed-package}" />
    <property name="zipalign-package-ospath" value="${apk-release-path}/17kreader_${channel-id}_v${version-code}_release.apk" />
    <property name="signature-file" value="${basedir}/Reader.keystore" />
    <property name="storepass" value="chineseall" />
    <property name="keypass" value="chineseall" />


    <!-- -->
    <property name="jarsigner" value="${jdk-home}/bin/jarsigner.exe" />

    <!-- -->
    <property name="zipalign" value="${sdk-tools}/zipalign.exe" />







    <!---->
    <property name="external-lib" value="${basedir}/lib" />


    <property name="res-pack-tool-lib" value="${basedir}/pack-tool-lib" />







    <!-- -->
    <target name="init">
        <echo>this is my first ant-project</echo>
        <delete dir="${outdir}" />
        <delete dir="${outdir-classes}" />
        <delete dir="${outdir-gen}" />
        <mkdir dir="${outdir}" />
        <mkdir dir="${outdir-classes}" />
        <mkdir dir="${outdir-gen}" />
    </target>





    <!-- aapR.java -->
    <target name="resource-src" depends="init">
        <echo>Generating R.java...</echo>
        <exec executable="${aapt}" failonerror="true">
            <arg value="package" />
            <arg value="-m" />
            <arg value="-J" />
            <arg value="${outdir-gen}" />
            <arg value="-M" />
            <arg value="${basedir}/AndroidManifest.xml" />
            <arg value="-S" />
            <arg value="${resource-dir}" />
            <arg value="-I" />
            <arg value="${android-jar}" />
            <arg value="-I" />
            <arg value="${external-lib}/Analytics_Android_SDK_3.1.0.jar" />
            <arg value="-I" />
            <arg value="${external-lib}/juniversalchardet-1.0.3.jar" />

        </exec>
    </target>
    <!-- Generate java classes from .aidl files. -->
    <target name="aidl" depends="init">
        <echo>Compiling aidl files into Java classes...</echo>
        <apply executable="${aidl}" failonerror="true">
            <arg value="-p${android-framework}" />
            <arg value="-I${src-dir}" />
            <fileset dir="${src-dir}">
                <include name="**/*.aidl" />
            </fileset>
        </apply>
    </target>

    <!--
    -->
    <target name="compile" depends="init, resource-src, aidl">
        <echo message="lib-path:${external-lib}" />

        <javac encoding="utf-8" target="1.6" debug="true" extdirs="" srcdir="${basedir}" destdir="${outdir-classes}" bootclasspath="${android-jar}" classpath="${external-lib}/Analytics_Android_SDK_3.1.0.jar;${external-lib}/juniversalchardet-1.0.3.jar" />

    </target>

    <!-- -->
    <target name="proguard" depends="compile">
        <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};${external-lib}/Analytics_Android_SDK_3.1.0.jar
                ;${external-lib}/juniversalchardet-1.0.3.jar" />

            <arg value="-dontpreverify" />
            <arg value="-dontoptimize" />
            <arg value="-dontusemixedcaseclassnames" />
            <arg value="-repackageclasses ''" />
            <arg value="-allowaccessmodification" />
            <!--  -->
            <arg value="-keep public class * extends android.app.Activity" />
            <arg value="-keep public class * extends android.app.Application" />
            <arg value="-keep public class * extends android.app.Service" />
            <arg value="-keep public class * extends android.content.BroadcastReceiver" />
            <arg value="-keep public class * extends android.content.ContentProvider" />
            <arg value="-keep public class * extends android.app.backup.BackupAgentHelper" />
            <arg value="-keep public class * extends android.preference.Preference" />
            <arg value="-keep public class com.android.vending.licensing.ILicensingService" />
            <arg value="-keepclasseswithmembernames class * { native &lt;methods&gt;;}" />
            <arg value="-keepclasseswithmembers class * {
                public &lt;init&gt;(android.content.Context, android.util.AttributeSet);
            }" />

            <arg value="-keepclasseswithmembers class * {
                    public &lt;init&gt;(android.content.Context, android.util.AttributeSet, int);
                }" />
            <arg value="-keepclassmembers class * extends android.app.Activity {
                       public void *(android.view.View);
                    }" />
            <arg value="-keepclassmembers enum * {
                public static **[] values();
                public static ** valueOf(java.lang.String);
            }" />
            <arg value="-keep class * implements android.os.Parcelable {
                  public static final android.os.Parcelable$Creator *;
                }" />
            <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="http://lijianyeath.blog.163.com/optimized.jar" dest="${outdir-classes}" />
        <delete file="optimized.jar" />
    </target>

    <!-- -->
    <target name="dex" depends="proguard">
        <echo>Converting compiled files into ${intermediate-dex}... </echo>
        <exec executable="${dx}" failonerror="true">
            <arg value="--dex" />
            <arg value="--output=${intermediate-dex}" />
            <arg value="${out.classes.absolute.dir}" />
            <arg value="${external-lib}/Analytics_Android_SDK_3.1.0.jar" />
            <arg value="${external-lib}/juniversalchardet-1.0.3.jar" />

        </exec>
    </target>

    <!--  -->
    <target name="package-res-and-assets">
        <echo>Packaging resources and assets...</echo>
        <exec executable="${aapt}" failonerror="true">
            <arg value="package" />
            <arg value="-f" />
            <arg value="-M" />
            <arg value="${basedir}/AndroidManifest.xml" />
            <arg value="-S" />
            <arg value="${resource-dir}" />
            <arg value="-A" />
            <arg value="${asset-dir}" />
            <arg value="-I" />
            <arg value="${android-jar}" />
            <arg value="-F" />
            <arg value="${resources-package}" />
        </exec>
    </target>

    <!--  -->
    <target name="debug" depends="dex, package-res-and-assets">
        <echo>release:Packaging ${out-debug-package-ospath}, and signing it with a debug key...</echo>
        <exec executable="${apk-builder}" failonerror="true">
            <arg value="${out-unsigned-package-ospath}" />
            <arg value="-u" />
            <arg value="-z" />
            <arg value="${resources-package-ospath}" />
            <arg value="-f" />
            <arg value="${intermediate-dex}" />
            <arg value="-rf" />
            <arg value="${src-dir}" />
        </exec>
    </target>

    <!---->
    <target name="jarsigner" depends="debug">
        <echo> jarsigner ${out-signed-package-ospath}</echo>
        <exec executable="${jarsigner}" failonerror="true">
            <arg value="-verbose" />
            <arg value="-storepass" />
            <arg value="${storepass}" />
            <arg value="-keypass" />
            <arg value="${keypass}" />
            <arg value="-keystore" />
            <arg value="${signature-file}" />
            <arg value="-signedjar" />
            <arg value="${out-signed-package-ospath}" />
            <arg value="${out-unsigned-package-ospath}" />
            <arg value="chineseallreader" />
        </exec>
    </target>

    <!--zipalign-->
    <target name="zipalign" depends="jarsigner">
        <echo> zipalign ${zipalign-package-ospath}</echo>
        <exec executable="${zipalign}" failonerror="true">
            <arg value="-v" />
            <arg value="-f" />
            <arg value="4" />
            <arg value="${out-signed-package-ospath}" />
            <arg value="${apk-release-path}/17kreader_${channel-id}_v${version.code}.apk" />
        </exec>
    </target>

    <taskdef resource="net/sf/antcontrib/antlib.xml">
        <classpath>
            <pathelement location="${res-pack-tool-lib}/ant-contrib-1.0b3.jar" />
        </classpath>
    </taskdef>
    <target name="pack-single-book">
        <echo message="channel-name=${channel-id}">
        </echo>
        <copy file="${basedir}/AndroidManifestT.xml" tofile="${basedir}/AndroidManifest.xml" overwrite="true">
        </copy>
        <replace file="${basedir}/AndroidManifest.xml" token="__UMENG_CHANNEL__" encoding="utf-8" value="${channel-id}">
        </replace>
        <replace file="${basedir}/AndroidManifest.xml" token="__UMENG_APPKEY__" encoding="utf-8" value="${app.key}">
        </replace>
        <replace file="${basedir}/AndroidManifest.xml" token="__VERSION__" encoding="utf-8" value="${version.code}">
        </replace>
        <replace file="${basedir}/AndroidManifest.xml" token="__VERSION_NAME__" encoding="utf-8" value="${version.name}">
        </replace>
        <antcall target="zipalign">
        </antcall>
    </target>

    <target name="batch-pack">
        <echo> start batch package process.... </echo>
        <mkdir dir="${apk-release-path}" />
        <foreach list="${channel.ids}" target="pack-single-book" param="channel-id" delimiter=";">
        </foreach>

    </target>

</project>
  评论这张
 
阅读(214)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017