2013-01-24 36 views
5

Tôi đang cố gắng xây dựng dự án android đơn giản bằng kiến. Đây là kịch bản kiến ​​của tôixây dựng ứng dụng android chỉ với kiến ​​

<?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> 

Kịch bản này không trên mã khối <target name="resource-src" depends="dirs"> và tôi nhận được tin nhắn như vậy: Configurations: D: \ Development \ Eclipse_workspace \ HelloWorld \ res \ giá trị \ styles.xml: 7: lỗi: Lỗi truy xuất phụ huynh cho mục: Không tìm thấy tài nguyên nào khớp với tên đã cho 'android: Theme.Light' D: \ Development \ Eclipse_workspace \ HelloWorld \ res \ values-v11 \ styles.xml: 7: lỗi: Lỗi khi truy xuất cấp độ gốc cho mục: Không tìm thấy tài nguyên nào khớp với tên đã cho 'android: Theme.Holo.Light'. D: \ Development \ Eclipse_workspace \ HelloWorld \ res \ values-v14 \ styles.xml: 8: lỗi: Lỗi truy xuất phụ huynh cho mục: Không tìm thấy tài nguyên nào khớp với tên đã cho 'android: Theme.Holo.Light.DarkActionBar'.

Nếu tôi xây dựng ứng dụng bằng nhật thực - OK, ứng dụng được xây dựng tốt.

Vì vậy, có gì sai? Làm thế nào tôi có thể sửa chữa nó?

+0

giá trị của 'target' trong file' project.properties' của bạn là gì? – CommonsWare

Trả lời

6

bạn đang làm điều đó một cách khó khăn. android có các công cụ để tạo các kịch bản xây dựng kiến ​​cho dự án của bạn. chỉ cần chạy điều này từ thư mục dự án của bạn,

android update project --path . 

(lệnh android là ở <sdk folder>/tools).

điều này sẽ tạo một build.xml và một số tệp thuộc tính đi kèm khác. để biết cách sử dụng chi tiết lệnh android, hãy xem documentation on managing projects from the command line.

+2

Tôi muốn xây dựng các dự án không phân biệt IDE mà tôi đang sử dụng. Bạn có thể chia sẻ chính xác lệnh này 'android update project --path' hoạt động không? Liệu nó cần cấu trúc thư mục như eclipse không cho dự án (src, gen, tài sản, libs, res) hoặc nó có thể được tùy chỉnh để làm việc với bất kỳ cấu trúc dự án? – konunger

+0

liên kết tôi đã đăng có nhiều thông tin hơn tôi có thể cung cấp cho bạn tại đây. tôi đoán là có nó phụ thuộc vào một cấu trúc dự án tiêu chuẩn android. gen/assets/res/etc không phải là một điều nhật thực, chúng là một điều android và dự án của bạn phải phù hợp hoặc để cho các cơn đau đầu bắt đầu. –

+0

cảm ơn, tôi đã tìm thấy quyết định – konunger

0

Giả sử rằng bạn có cài đặt Ant .Go vào thư mục Android SDK \ tools và thực hiện lệnh sau

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

Các vấn đề liên quan