2010-03-17 145 views
18

我有一個現有的項目,使用我的IDE構建良好。我想使用「android update」命令爲這個項目生成一個ant構建文件。如何使用ant建立外部庫的Android應用程序?

構建文件生成正常,但構建失敗,因爲它沒有與我在我的libs目錄中有一些jarfiles構建。

我想找出正確的方式告訴ant與我的libs目錄中的一些外部jar文件構建。我應該怎麼做?它是build.properties中的屬性嗎?我需要修改build.xml嗎?或者是否有完全不同的解決方案?

回答

32

,但因爲它不是 建築,一些jarfiles中我有我的 libs目錄生成失敗。

而你的錯誤信息是......什麼?我懷疑你可能會誤解錯誤信息。

我想弄清楚的正確方法 告訴螞蟻一些 外部jar文件建立在我的庫 目錄。我應該怎麼做?

只要將它們放在libs/中,Ant會將所有內容添加到您的構建路徑中。示例參見this projectthis projectthis project

+1

啊,問題是,我的一個依賴是一個項目的依賴,而不是一個罐子依賴。我會解決這個問題。 – emmby

+0

感謝commonsware。如果你想刺探後續,我在這裏有另一個問題:http://stackoverflow.com/questions/2466437/how-to-build-an-android-test-app-with-a -dependency-on-another-app-using-ant – emmby

+0

是的,我看到了一個。我不是Android測試框架的粉絲,所以我不知道那裏的答案。抱歉! – CommonsWare

1

但是,如果您打算進一步修改您的構建腳本,那麼我同意Mark的意見,而不是您需要將其定製。將任務從android/platforms/android-PLATFORMVERSION/templates/android_rules.xml傳送到您的build.xml並修改您想要修改的任何內容。包括外部庫的位置。

14

我花了一段時間試圖讓Facebook API與螞蟻一起工作。我的訣竅是將其添加到我的default.properties文件中。

android.library.reference.1=../Facebook 

其中../Facebook包含AndroidManifest.xml等。真正的關鍵是相對路徑。不要使用絕對路徑,因爲Ant似乎將您的項目目錄視爲根。

這應該適用於您從源代碼中包含的其他庫項目。

+0

非常有幫助!謝謝! – wallacer

+0

查看sdk示例中的TicTacToeLib&TicTacToeMain。並閱讀README.txt文件。 – douyw

+1

這正是我所需要的答案,簡要說明和切入點。 – gregko

8

我正在處理類似的問題。我使用標準Ant build.xml(由Android SDK生成)在Jenkins上構建Android項目。我也參考了另一個帶有一些共享域類的Java項目。在Eclipse中,它沒有問題。域項目是一個項目引用。然而在Jenkins上,這個domain.jar是由Maven構建的,它不能被Android項目訪問。

我終於解決它通過在build.xml文件的末尾添加這樣的:

<target name="-pre-build"> 
    <copy todir="${jar.libs.dir}"> 
    <fileset 
     dir="../path-to-another-project/target" 
     includes="*.jar" /> 
    </copy> 
</target> 

此副本從另一個項目的目標目錄中的所有jar文件到我的Android項目的「庫」目錄。 -pre-build Ant目標在Android編譯開始之前自動調用。

+6

您應該將custom_rules.xml添加到與build.xml相同的目錄中,而不是更改build.xml。將-pre-build目標放在那裏,build.xml會自動導入它。 custom_rules.xml可以包含所有的前期和後期構建操作 – wallacer

相關問題