·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. <?xml version="1.0" encoding="GBK"?>  
  2. <!-- 步骤   
  3.   
  4.     1.用aapt生成R.java  
  5.   
  6.     2.JAVAC编译JAVA文件  
  7.   
  8.     3.批处理生成classes.dex  
  9.   
  10.     4.aapt打包资源   
  11.   
  12.     5.apkbuilder包资源和类文件为APK文件  
  13.   
  14.     6.jarsinger 对APK进行签名-->  
  15.   
  16. <project name="MyJbox2D" default="zipalign" basedir=".">  
  17.   
  18.     <property file="local.properties" />  
  19.   
  20.     <property name="jbox2dlib" value="D:/workspace/MyJbox2D/lib" />  
  21.   
  22.     <!-- 定义自己的输出目录 -->  
  23.   
  24.     <property name="outdir" value="outdir" />  
  25.   
  26.     <property name="out.absolute.dir" location="${outdir}" />  
  27.   
  28.     <!-- 定义 R.java 所有目录 -->  
  29.   
  30.     <property name="outdir-gen" value="gen" />  
  31.   
  32.     <!-- 读取目录 -->  
  33.   
  34.     <property name="resource-dir" value="res" />  
  35.   
  36.     <property name="asset-dir" value="assets" />  
  37.   
  38.     <property name="src-dir" value="src" />  
  39.   
  40.     <property name="src-dir-ospath" value="${basedir}/${src-dir}" />  
  41.   
  42.     <!-- 输出目录 -->  
  43.   
  44.     <property name="outdir-classes" value="${outdir}/classes" />  
  45.   
  46.     <property name="out.classes.absolute.dir" location="${outdir-classes}" />  
  47.   
  48.     <!-- 临时类资源文件 -->  
  49.   
  50.     <property name="dex-file" value="classes.dex" />  
  51.   
  52.     <property name="intermediate-dex" value="${out.absolute.dir}/${dex-file}" />  
  53.   
  54.     <!-- 最终生成文件 -->  
  55.   
  56.     <property name="out-package" value="${outdir}/${ant.project.name}.apk" />  
  57.   
  58.     <!-- 要使用的工具 -->  
  59.   
  60.     <property name="aapt" value="${sdk-platform-tools}/aapt.exe" />  
  61.   
  62.     <property name="aidl" value="${sdk-platform-tools}/aidl.exe" />  
  63.   
  64.     <property name="dx" value="${sdk-platform-tools}/dx.bat" />  
  65.   
  66.     <property name="adb" value="${sdk-tools}/adb" />  
  67.   
  68.     <property name="apk-builder" value="${sdk-tools}/apkbuilder.bat" />  
  69.   
  70.     <property name="android-jar" value="${sdk-platform}/android.jar" />  
  71.   
  72.     <!-- 最终生成各种包文件 -->  
  73.   
  74.     <property name="resources-package" value="${outdir}/${ant.project.name}" />  
  75.   
  76.     <property name="resources-package-ospath" value="${basedir}/${resources-package}" />  
  77.   
  78.     <property name="out-unsigned-package" value="${outdir}/${ant.project.name}-unsigned.apk" />  
  79.   
  80.     <property name="out-unsigned-package-ospath" value="${basedir}/${out-unsigned-package}" />  
  81.   
  82.     <property name="out-signed-package" value="${outdir}/${ant.project.name}-signed.apk" />  
  83.   
  84.     <property name="out-signed-package-ospath" value="${basedir}/${out-signed-package}" />  
  85.   
  86.     <property name="zipalign-package-ospath" value="${basedir}/${outdir}/${ant.project.name}_release.apk" />  
  87.   
  88.   
  89.     <!--签名工具-->  
  90.   
  91.     <property name="jarsigner" value="${jdk-home}/bin/jarsigner.exe" />  
  92.   
  93.     <!--优化APK工具-->  
  94.   
  95.     <property name="zipalign" value="${sdk-tools}/zipalign.exe" />  
  96.   
  97.     <!-- 初始化 -->  
  98.   
  99.     <target name="init">  
  100.   
  101.         <echo>Creating all output directories </echo>  
  102.   
  103.         <delete dir="${outdir}" />  
  104.   
  105.         <delete dir="${outdir-classes}" />  
  106.   
  107.         <delete dir="${outdir-gen}" />  
  108.   
  109.         <mkdir dir="${outdir}" />  
  110.   
  111.         <mkdir dir="${outdir-classes}" />  
  112.   
  113.         <mkdir dir="${outdir-gen}" />  
  114.   
  115.     </target>  
  116.   
  117.     <!--步骤 1: aapt生成R.java -->  
  118.   
  119.     <target name="resource-src" depends="init">  
  120.   
  121.         <echo>Generating R.java...</echo>  
  122.   
  123.         <exec executable="${aapt}" failonerror="true">  
  124.   
  125.             <arg value="package" />  
  126.   
  127.             <arg value="-m" />  
  128.   
  129.             <arg value="-J" />  
  130.   
  131.             <arg value="${outdir-gen}" />  
  132.   
  133.             <arg value="-M" />  
  134.   
  135.             <arg value="AndroidManifest.xml" />  
  136.   
  137.             <arg value="-S" />  
  138.   
  139.             <arg value="${resource-dir}" />  
  140.   
  141.             <arg value="-I" />  
  142.   
  143.             <arg value="${android-jar}" />  
  144.   
  145.         </exec>  
  146.   
  147.     </target>  
  148.   
  149.     <!-- Generate java classes from .aidl files. -->  
  150.   
  151.     <target name="aidl" depends="init">  
  152.   
  153.         <echo>Compiling aidl files into Java classes...</echo>  
  154.   
  155.         <apply executable="${aidl}" failonerror="true">  
  156.   
  157.             <arg value="-p${android-framework}" />  
  158.   
  159.             <arg value="-I${src-dir}" />  
  160.   
  161.             <fileset dir="${src-dir}">  
  162.   
  163.                 <include name="**/*.aidl" />  
  164.   
  165.             </fileset>  
  166.   
  167.         </apply>  
  168.   
  169.     </target>  
  170.   
  171.     <!-- 步骤 2. 编译所有class文件. -->  
  172.   
  173.     <target name="compile" depends="init, resource-src, aidl">  
  174.   
  175.         <unjar src="${jbox2dlib}/jbox2d.jar" mce_src="${jbox2dlib}/jbox2d.jar" dest="${outdir-classes}" />  
  176.   
  177.         <javac encoding="GBK" target="1.6" debug="true" extdirs="" srcdir="." destdir="${outdir-classes}" bootclasspath="${android-jar}" />  
  178.   
  179.     </target>  
  180.   
  181.     <!-- 混淆代码-->  
  182.   
  183.     <target name="proguard" depends="compile">  
  184.   
  185.         <jar basedir="${outdir-classes}" destfile="temp.jar" />  
  186.   
  187.         <java jar="${proguard-home}/proguard.jar" fork="true" failonerror="true">  
  188.   
  189.             <jvmarg value="-Dmaximum.inlined.code.length=32" />  
  190.   
  191.             <arg value="-injars temp.jar" />  
  192.   
  193.             <arg value="-outjars optimized.jar" />  
  194.   
  195.             <arg value="-libraryjars ${android-jar}" />  
  196.   
  197.             <arg value="-dontpreverify" />  
  198.   
  199.             <arg value="-dontoptimize" />  
  200.   
  201.             <arg value="-dontusemixedcaseclassnames" />  
  202.   
  203.             <arg value="-repackageclasses ''" />  
  204.   
  205.             <arg value="-allowaccessmodification" />  
  206.   
  207.             <!-- 要保留自己的主ACTIVITY类 -->  
  208.   
  209.             <arg value="-keep public class com.jbox2d.demo.MyActivity" />  
  210.   
  211.             <arg value="-optimizationpasses 7" />  
  212.   
  213.             <arg value="-verbose" />  
  214.   
  215.             <arg value="-dontskipnonpubliclibraryclasses" />  
  216.   
  217.             <arg value="-dontskipnonpubliclibraryclassmembers" />  
  218.   
  219.         </java>  
  220.   
  221.         <delete file="temp.jar" />  
  222.   
  223.         <delete dir="${outdir-classes}" />  
  224.   
  225.         <mkdir dir="${outdir-classes}" />  
  226.   
  227.         <unzip src="optimized.jar" mce_src="optimized.jar" dest="${outdir-classes}" />  
  228.   
  229.         <delete file="optimized.jar" />  
  230.   
  231.     </target>  
  232.   
  233.     <!-- 步骤 3. 转换class文件为dex文件. -->  
  234.   
  235.     <target name="dex" depends="proguard">  
  236.   
  237.         <echo>Converting compiled files into ${intermediate-dex}... </echo>  
  238.   
  239.         <exec executable="${dx}" failonerror="true">  
  240.   
  241.             <arg value="--dex" />  
  242.   
  243.             <arg value="--output=${intermediate-dex}" />  
  244.   
  245.             <arg path="${out.classes.absolute.dir}" />  
  246.   
  247.         </exec>  
  248.   
  249.     </target>  
  250.   
  251.     <!-- 步骤 4. 将资源和清单打包. -->  
  252.   
  253.     <target name="package-res-and-assets">  
  254.   
  255.         <echo>Packaging resources and assets...</echo>  
  256.   
  257.         <exec executable="${aapt}" failonerror="true">  
  258.   
  259.             <arg value="package" />  
  260.   
  261.             <arg value="-f" />  
  262.   
  263.             <arg value="-M" />  
  264.   
  265.             <arg value="AndroidManifest.xml" />  
  266.   
  267.             <arg value="-S" />  
  268.   
  269.             <arg value="${resource-dir}" />  
  270.   
  271.             <arg value="-A" />  
  272.   
  273.             <arg value="${asset-dir}" />  
  274.   
  275.             <arg value="-I" />  
  276.   
  277.             <arg value="${android-jar}" />  
  278.   
  279.             <arg value="-F" />  
  280.   
  281.             <arg value="${resources-package}" />  
  282.   
  283.         </exec>  
  284.   
  285.     </target>  
  286.   
  287.     <!-- 步骤 5. 将打好的包编译为APK文件. -->  
  288.   
  289.     <target name="debug" depends="dex, package-res-and-assets">  
  290.   
  291.         <echo>release:Packaging ${out-debug-package-ospath}, and signing it with a debug key...</echo>  
  292.   
  293.         <exec executable="${apk-builder}" failonerror="true">  
  294.   
  295.             <arg value="${out-unsigned-package-ospath}" />  
  296.   
  297.             <arg value="-u" />  
  298.   
  299.             <arg value="-z" />  
  300.   
  301.             <arg value="${resources-package-ospath}" />  
  302.   
  303.             <arg value="-f" />  
  304.   
  305.             <arg value="${intermediate-dex}" />  
  306.   
  307.             <arg value="-rf" />  
  308.   
  309.             <arg value="${src-dir-ospath}" />  
  310.   
  311.         </exec>  
  312.   
  313.     </target>  
  314.   
  315.     <!--步骤 6. 签名APK文件 -->  
  316.   
  317.     <target name="jarsigner" depends="debug">  
  318.   
  319.         <echo> jarsigner ${out-signed-package-ospath}</echo>  
  320.   
  321.         <exec executable="${jarsigner}" failonerror="true">  
  322.   
  323.             <arg value="-verbose" />  
  324.   
  325.             <arg value="-storepass" />  
  326.   
  327.             <arg value="${keypass}" />  
  328.   
  329.             <arg value="-keystore" />  
  330.   
  331.             <arg value="${keystore}" />  
  332.   
  333.             <arg value="-signedjar" />  
  334.   
  335.             <arg value="${out-signed-package-ospath}" />  
  336.   
  337.             <arg value="${out-unsigned-package-ospath}" />  
  338.   
  339.             <arg value="${key}" />  
  340.   
  341.         </exec>  
  342.   
  343.     </target>  
  344.   
  345.     <!--zipalign优化android程序-->  
  346.   
  347.     <target name="zipalign" depends="jarsigner">  
  348.   
  349.         <echo> zipalign ${zipalign-package-ospath}</echo>  
  350.   
  351.         <exec executable="${zipalign}" failonerror="true">  
  352.   
  353.             <arg value="-v" />  
  354.   
  355.             <arg value="-f" />  
  356.   
  357.             <arg value="4" />  
  358.   
  359.             <arg value="${out-signed-package-ospath}" />  
  360.   
  361.             <arg value="${zipalign-package-ospath}" />  
  362.   
  363.         </exec>  
  364.   
  365.     </target>  
  366.   
  367.     <!-- 安装到默认的手机或模拟器-->  
  368.   
  369.     <target name="install" depends="zipalign">  
  370.   
  371.         <echo>Installing ${out-debug-package} onto default emulator...</echo>  
  372.   
  373.         <exec executable="${adb}" failonerror="true">  
  374.   
  375.             <arg value="install" />  
  376.   
  377.             <arg value="${out-signed-package}" />  
  378.   
  379.         </exec>  
  380.   
  381.     </target>  
  382.   
  383. </project>  
 posted on 2011-06-29 18:27  清水湾  阅读(3727)  评论(0编辑  收藏  举报