2012-02-22 54 views
5

我想在這整個「螞蟻」構建系統的東西得到處理。我已經創建了一個build.xml,Android通過使用命令:android update project -p .本地給出了我。如何使用Ant編譯和jar一個Android項目?

雖然這給了我一個模板build.xml文件,但我想多選幾個選項。具體來說,我希望能夠JAR和/或編譯我的項目;最好用一個版本號。

紅利問題:如何從我的JAR版本中排除文件。例如,我有一個用於測試功能的活動,但我不希望將它包含在最終的JAR中。

Android給我的build.xml文件是Gisted here,因爲它很長(主要是評論)。

編輯:我也使用IntelliJ所以沒有Eclipse的具體細節,請!

+2

考慮到Android應用程序不是JAR文件,「JAR和編譯我的項目」是什麼意思? – CommonsWare 2012-02-22 23:40:42

+0

@CommonsWare,我真的是指兩個「目標」。 1。編譯我的代碼,以便類和dex文件以及任何位於其正確目錄中的內容。 2. JAR我想要的那些類文件,以便我可以適當地分發我的Android「庫」。 – hwrdprkns 2012-02-22 23:45:34

+0

此外,我應該澄清。我不知道我的項目是否符合「圖書館」項目的要求。但是我只是使用了我想要JAR的Android SDK的代碼,以便我可以在另一個應用程序中使用它。不是活動,只是其他代碼。 – hwrdprkns 2012-02-22 23:46:23

回答

14

具體來說,我想能夠JAR和/或編譯我的項目;最好用一個版本號。

在Android中,版本號用於應用程序,而不是JAR。

話雖這麼說,加入jar目標是朝下方添加以下內容到build.xml文件的問題:

<target name="jar" depends="debug"> 
    <jar 
     destfile="bin/whatever-you-want-to-call-the.jar" 
     basedir="bin/classes" 
    /> 
</target> 

然後,運行ant jar編譯和打包的JAR文件。

您會在my GitHub area(參見cwac-回購)中的大多數可重複使用的Android組件中看到此模式。

Bonus問題:如何從我的JAR版本中排除文件。例如,我有一個用於測試功能的活動,但我不希望將它包含在最終的JAR中。

使用excludesexcludesfile,如jar Ant task documentation中所述。

+0

完美。另外,'excludes =「**/ExcludedFile.class」'排除了你不喜歡的文件。而'depends =「debug」'是需要預編譯的魔法。 – hwrdprkns 2012-02-23 01:25:49

+0

@hwrdprkns你能解釋一下「你需要預編譯的魔法」是什麼意思嗎?你是說在構建jar之前指定「depends ='debug'」強制ant進行編譯?編輯:實際上閱讀更多後,這是否意味着當你打電話「螞蟻罐」時,它意識到它需要先做「螞蟻調試」?我認爲我們使用調試而不是發佈,因爲我們不關心簽署jar嗎? – 2014-06-11 18:00:17

1

對於Android和非Android項目的重用,我建議你看一下Android Maven插件。它利用了Maven的依賴管理和其他強大功能,並且將更適合你想要做的事情。

檢出webpage and documentation就可以了,也許關於Android development in Maven : The Complete Reference的章節我寫得更多一點理解,還有一些關於Maven的內容。

Android插件支持對正常jar工件的重用,如果代碼中存在Android依賴關係,則可以使用apklib項目。很多像Roboguice,robolectric,actionbarsherlock等項目都成功地使用了這個功能。

+0

不是什麼問題要求,但+1,因爲這看起來像一個很棒的工具,我應該知道。 – hwrdprkns 2012-02-23 00:31:21

+0

沒問題..只是試圖拯救你從xml地獄和許多升級的痛苦,一旦你開始自定義螞蟻構建.. – 2012-02-23 01:10:57

相關問題