2014-01-20 145 views
0

我第一次使用android ant構建。我有一些庫重寫Android代碼中的庫。我可以在Eclipse中控制構建順序,一切正常。當我使用ant編譯構建時,它似乎是在我的覆蓋之前先導入android庫,由於缺少常量,方法名稱等原因導致編譯錯誤。Android構建路徑順序

有沒有一種方法可以讓我的庫提前的Android的人,所以它會正確構建?

+0

是[this](http://stackoverflow.com/questions/939757/ant-classpath-order)你在找什麼? – fifarunnerr

+1

「我有一些庫覆蓋了Android代碼中的庫」 - 這是行不通的,因爲您在運行時不控制類路徑,所以框架中的庫將取代您的重複項,合格的班級名稱。 – CommonsWare

+0

@CommonsWare我不認爲這是真的,因爲我們已經在從eclipse運行的部署中執行此操作。我們只是試圖用Ant來做同樣的事情。 – Thom

回答

1

經過大量搜索(以及無用的摩托羅拉文檔)之後,我發現了一種方法,可以在仍使用默認build.xml文件的情況下將我的jar放在android前面。

android庫作爲bootclasspathref進入javac任務。這會在標準瓶子之前進行評估,這就是我遇到問題的原因。

稍後的一些研究,我看到compilerarg上的javac任務被設置爲$ {java.compilerargs}。我對我的項目中的build.xml進行了一些閱讀,它調用了默認的build.xml,它告訴你如何覆蓋默認的build.xml中的東西。於是,在一天結束的時候,我改變了三行:

<!-- version-tag: custom --> 
<!-- add the custom bluetooth libraries ahead of Android --> 
<property name="java.compilerargs" value="-Xbootclasspath/p:/home/thomash/svn/air-android/branches/ticket_2198a/libs/BluetoothGatt.jar:/home/thomash/svn/air-android/branches/ticket_2198a/libs/BluetoothGattService.jar" /> 

的變化版本標籤很重要,這樣的Android不自動銷燬的升級更改。