2013-01-24 94 views
5

我想通過螞蟻構建簡單的android項目。這裏是我的Ant腳本只用螞蟻構建android應用程序

<?xml version="1.0" encoding="UTF-8"?> 
    <project name="HelloWorld" default="help"> 

    <!-- Input directories --> 
    <property name="source.dir" value="src" /> 
    <property name="source.absolute.dir" location="${source.dir}" /> 
    <property name="gen.dir" value="gen" /> 
    <property name="gen.absolute.dir" location="${gen.dir}" /> 
    <property name="resource.dir" value="res" /> 
    <property name="resource.absolute.dir" location="${resource.dir}" /> 
    <property name="asset.dir" value="assets" /> 
    <property name="asset.absolute.dir" location="${asset.dir}" /> 

    <!-- Directory for the third party java libraries --> 
    <property name="external.libs.dir" value="libs" /> 
    <property name="external.libs.absolute.dir" location="${external.libs.dir}" /> 

    <!-- Output directories --> 
    <property name="out.dir" value="ant"/> 
    <property name="out.absolute.dir" location="${out.dir}/bin"/> 
    <property name="out.classes.absolute.dir" value="${out.absolute.dir}/classes"/> 

    <property name="sdk.dir" value="../../AndroidSDK"/> 
    <property name="sdk.absolute.dir" location="${sdk.dir}"/> 

    <property name="android.jar" value="${sdk.absolute.dir}/platforms/android-8"/> 

    <!-- The final package file to generate --> 
    <property name="out.debug.unaligned.package" 
        location="${out.absolute.dir}/${ant.project.name}-debug-unaligned.apk" /> 
    <property name="out.debug.package" 
        location="${out.absolute.dir}/${ant.project.name}-debug.apk" /> 
    <property name="out.unsigned.package" 
        location="${out.absolute.dir}/${ant.project.name}-unsigned.apk" /> 
    <property name="out.unaligned.package" 
        location="${out.absolute.dir}/${ant.project.name}-unaligned.apk" /> 
    <property name="out.release.package" 
        location="${out.absolute.dir}/${ant.project.name}-release.apk" /> 

    <!-- Verbosity --> 
    <property name="verbose" value="true" /> 

    <condition property="v.option" value="-v" else=""> 
     <istrue value="${verbose}" /> 
    </condition> 

    <!-- tools location --> 
    <property name="android.tools.dir" location="${sdk.absolute.dir}/tools" /> 
    <property name="android.platform.tools.dir" location="${sdk.absolute.dir}/platform-tools" /> 
    <condition property="exe" value=".exe" else=""><os family="windows" /></condition> 
    <condition property="bat" value=".bat" else=""><os family="windows" /></condition> 
    <property name="adb" location="${android.platform.tools.dir}/adb${exe}" /> 
    <property name="zipalign" location="${android.tools.dir}/zipalign${exe}" /> 
    <property name="aidl" location="${android.platform.tools.dir}/aidl${exe}" /> 
    <property name="aapt" location="${android.platform.tools.dir}/aapt${exe}" /> 
    <property name="dx" location="${android.platform.tools.dir}/dx${bat}" /> 

    <!-- Generates the R.java file for this project's resources. --> 
    <target name="resource-src" depends="dirs"> 
     <echo>Generating R.java, Manifest.java from the resources...</echo> 
     <exec executable="${aapt}" failonerror="true"> 
      <arg value="package" /> 
      <arg line="${v.option}" /> 
      <arg value="-m" /> 
      <arg value="-J" /> 
      <arg path="${gen.absolute.dir}" /> 
      <arg value="-M" /> 
      <arg path="AndroidManifest.xml" /> 
      <arg value="-S" /> 
      <arg path="${resource.absolute.dir}" /> 
      <arg value="-I" /> 
      <arg path="${android.jar}" /> 
     </exec> 
    </target> 

    <!-- Generates java classes from .aidl files. --> 
    <target name="aidl" depends="dirs"> 
     <echo>Compiling aidl files into Java classes...</echo> 
     <apply executable="${aidl}" failonerror="true"> 
      <arg value="-p${android.aidl}" /> 
      <arg value="-I${source.absolute.dir}" /> 
      <arg value="-o${gen.absolute.dir}" /> 
      <fileset dir="${source.absolute.dir}"> 
       <include name="**/*.aidl" /> 
      </fileset> 
     </apply> 
    </target> 

    <target name="compile" depends="resource-src, aidl" description="Compiles project's .java files into .class files"> 
     <javac destdir="${classes.absolute.dir}" > 
      <src path="${source.absolute.dir}" /> 
      <src path="${gen.absolute.dir}" /> 

      <classpath> 
       <fileset dir="${external.libs.absolute.dir}" includes="*.jar" /> 
      </classpath> 
     </javac> 
    </target> 

    <target name="clean" description="Removes output files created by other targets."> 
     <delete dir="${out.absolute.dir}" verbose="${verbose}" /> 
     <delete dir="${gen.absolute.dir}" verbose="${verbose}" /> 
    </target> 

    <!-- Creates the output directories if they don't exist yet. --> 
    <target name="dirs"> 
     <echo>Creating output directories if needed...</echo> 
     <mkdir dir="${resource.absolute.dir}" /> 
     <mkdir dir="${external.libs.absolute.dir}" /> 
     <mkdir dir="${gen.absolute.dir}" /> 
     <mkdir dir="${out.absolute.dir}" /> 
     <mkdir dir="${out.classes.absolute.dir}" /> 
    </target> 

</project> 

這個腳本的代碼塊<target name="resource-src" depends="dirs">失敗,我得到這樣的消息: 配置:d:\開發\ Eclipse_workspace \ HelloWorld的\水庫\值\ styles.xml:7:錯誤:錯誤檢索項目的父項:未找到與名稱匹配的資源'android:Theme.Light' D:\ Development \ Eclipse_workspace \ HelloWorld \ res \ values-v11 \ styles.xml:7:錯誤:檢索項的父項時出錯:未找到與給定名稱'android:Theme.Holo.Light'相匹配的資源。 D:\ Development \ Eclipse_workspace \ HelloWorld \ res \ values-v14 \ styles.xml:8:error:Error檢索父項:找不到與給定名稱'android:Theme.Holo.Light.DarkActionBar'匹配的資源。

如果我使用eclipse構建應用程序 - 沒關係,應用程序構建得很好。

那麼,怎麼了?我該如何解決它?

+0

什麼是'target'在你的'project.properties'文件中的值? – CommonsWare

回答

6

你正在這樣做的困難的方式。 android有工具爲您的項目創建ant構建腳本。只是從你的項目文件夾中運行此,

android update project --path . 

(該android命令在<sdk folder>/tools)。

這將創建一個build.xml和其他幾個伴隨的屬性文件。有關android命令的詳細用法,請參閱documentation on managing projects from the command line

+2

我想要構建項目,而不考慮我使用的IDE。你能分享一下這個命令android update project -path是如何工作的嗎?它是否需要eclipse爲項目(src,gen,assets,libs,res)這樣的目錄結構,還是可以爲任何項目結構進行自定義? – konunger

+0

我發佈的鏈接有更多的信息比我可以給你在這裏。我的猜測是,它取決於一個標準的Android項目結構。 gen/assets/res/etc不是日食,它們是一個安卓系統,你的項目應該符合或讓頭痛開始。 –

+0

謝謝,我已經找到了決定 – konunger

0

假設您有安裝Ant。去的Android SDK \ Tools文件夾並執行以下命令

android update project --target android-18 --path "path to the project" it will generate the build.xml file.