2012-06-29 81 views
3

我一直在使用ant來構建我的項目幾個月,直到r20剛剛出來昨天。我基本上只是使用默認構建文件提供的鉤子做一些小的更改。我的項目使用了2個庫項目,並且構建在Eclipse中正常工作。但是,我使用ant(我的目標是創建構建應用程序將連接到生產環境,臨時環境或qa環境)的官方簽名構建。 以下是錯誤消息我得到:Android Tools r20不會使用ant建立庫項目的項目,說我缺少庫中的project.properties,但我不是

構建失敗/Users/mwolfe/workspace/android-flex/app/build.xml:99: 出現以下錯誤而執行這一行: /用戶/ mwolfe/lib/android-sdk/tools/ant/build.xml:476: ../shared/SomeSdk/sdk解析爲沒有project.properties的路徑 項目文件 /Users/mwolfe/workspace/android-flex/shared/SomeSdk/sdk

但是我確信在這個文件夾中有一個project.properties文件,這工作正常之前。在build.xml看線476爲Android有這樣的:

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

    <!-- if we know about a tested project or libraries, we clean them too. --> 
    <if condition="${project.is.test}"> 
     <then> 
      <property name="tested.project.absolute.dir" location="${tested.project.dir}" /> 
      <subant failonerror="true"> 
       <fileset dir="${tested.project.absolute.dir}" includes="build.xml" /> 
       <target name="clean" /> 
      </subant> 
     </then> 
    </if> 

    <!-- get all the libraries --> 
    <if> 
     <condition><not><isset property="dont.do.deps" /></not></condition> 
     <then> 
<!-- LINE 476 HERE: --> <getlibpath libraryFolderPathOut="project.library.folder.path" /> 
      <if> 
       <condition> 
        <isreference refid="project.library.folder.path" /> 
       </condition> 
       <then> 
        <!-- clean the libraries with nodeps since we already 
         know about all the libraries even the indirect one --> 
        <subant 
          buildpathref="project.library.folder.path" 
          antfile="build.xml" 
          failonerror="true"> 
         <target name="nodeps" /> 
         <target name="clean" /> 
        </subant> 
       </then> 
      </if> 
     </then> 
    </if> 
</target> 

任何想法是什麼原因造成這個問題以及如何解決它?

回答

1

好吧,我想出瞭如何解決它。事情是這樣,無論出於何種原因,當我最初寫我自己的Ant腳本我有我自己的clean目標我把它叫做子項目的都是乾淨的目標,就像這樣:

<target name="clean" depends="androidbuild.clean"> 

    <exec executable="sh" failonerror="true"> 
     <arg value="${ndk.dir}/ndk-build" /> 
     <arg value="clean" /> 
    </exec> 
      <!-- remove the next 2 lines to fix the problem --> 
    <ant target="clean" dir="${android.library.reference.1}" /> 
    <ant target="clean" dir="${android.library.reference.2}" /> 
</target> 

這並不適用於一些工作了理由雖然並且它出現了新的ant build腳本android r20反正給我提供了這個處理,所以刪除了上面的2個clean命令修復了這個問題。

注意,androidbuild.clean扶養調用這是在$ ANDROID_SDK /工具/ ANT/build.xml文件 當您導入腳本,這樣做這樣定義父build.xml文件的clean目標:

<import file="${sdk.dir}/tools/ant/build.xml" as="androidbuild" /> 

因此,您可以在該構建文件中引用目標(ps,這也可以修復eclipse,因爲您認爲您的build.xml文件有錯誤,因此您不需要將android build.xml複製並粘貼到您自己的文件中其他人在線提出)。

相關問題