2013-02-12 243 views
8

我試圖使用自動化詹金斯詹金斯和Android構建

我使用下面的網站來實現這一 Link to site

我成功地能夠建立我自己的機器上的Android構建過程。最初我得到錯誤,說沒有找到build.xml文件(使用ant構建需要此文件)。所以我執行「android更新項目」。所以它會自動爲螞蟻生成所有必需的文件。

現在我的問題開始,當我試圖將我的回購託管到遠程服務器,並試圖從另一臺機器構建。它給出的錯誤是sdk.dir不正確。當我分析項目文件夾時,ther是一個名爲local.properties的文件,其中包含我的第一臺機器的SDK路徑,這是其他機器的錯誤。所以我將該文件添加到gitignore。現在該文件沒有跟蹤,因此構建失敗。

那麼有沒有什麼辦法可以在jenkins從遠程repo克隆項目之後自動生成ant所必需的文件?

回答

0

您可以編輯詹金斯工作區文件夾中的文件local.properties到正確的SDK路徑

+1

如何?這並不回答有關自動生成這些文件的問題...... – 2013-02-12 11:19:18

+0

是的,該解決方案的工作原理,但我需要自動化這個 – 2013-02-12 11:25:07

1

是。

如果您爲Jenkins安裝Android Emulator Plugin,則可以在作業中添加「創建Android構建文件」構建步驟。

這將自動檢測Jenkins工作區中的任何Android應用程序,測試或庫項目,並根據需要添加/更新build.xml和local.properties文件。

或者,如果您正在使用Ant構建步驟並已在存儲庫中包含build.xml,則可以通過在Advanced Ant選項中自己指定sdk.dir屬性來忽略創建local.properties文件的需要。

2

我們還用Jenkins構建android應用程序,並且還需要編輯local.properties。

在我的情況下,我用Jenkins構建自己的文件更新了SDK的路徑。在構建開始之前。

您可以在Linux上使用簡單的sed命令或在窗口上回顯內容(覆蓋內容)。

示例流程:

  1. SCM - 獲取源
  2. 編輯local.properties(如前建議)
  3. 運行Ant構建

注意 - 如果您使用的是「調用Ant「,你應該在之前添加一個」Execute Shell「步驟來處理local.properties的編輯。

我希望這會有所幫助。

+0

你可以解釋一點。我正在使用mac – 2013-02-12 11:24:32

+0

查看我的編輯。在這種情況下,Mac就像Linux一樣。 – 2013-02-12 11:30:38

+1

這可行,但如果您使用「調用Ant」,則無需費心創建/更新local.properties,因爲您可以在Ant「sdk.dir」變量中傳遞SDK路徑。當您有多個項目時(例如,取決於庫項目或測試項目),這也不是特別可擴展的。 – 2013-02-12 11:32:43

3

從您鏈接到的網站上,他們精確地解釋瞭如何配置sdk。DIR:

配置環境

當詹金斯構建使用Ant的項目,它需要知道你的 的Android SDK文件夾。爲此,請單擊您剛剛配置的Ant目標 構建步驟上的高級,然後將以下變量添加到 屬性字段。 sdk.dir =/opt/android-sdk-linux/

不要忘記用構建服務器上安裝Android SDK的正確位置 替換該變量的值。

作業配置完成。點擊保存。時間來測試你的構建。

+0

我已經在jenkins服務器中提供了正確的SDK,但不知何故它正在從跟蹤的local.properties文件只有 – 2013-02-12 11:28:37

+0

確實... local.properties絕對不應該在您的VCS中進行跟蹤:它定義了特定於每個開發人員環境的變量(因此名稱) – etienne 2013-02-12 17:07:33

1

您可以在jenkins中配置ant屬性。因此,您可以通過jenkins作業配置來指定local.properties的所有屬性。

當然你必須在jenkins構建服務器上安裝android sdk。

請閱讀this瞭解如何設置jenkins的螞蟻屬性。

將local.properties放在源代碼管理下是不好的做法,因爲多個開發人員和配置項對這些屬性會有不同的值。

0

我想你想添加構建步驟"Create Android build files"到你的配置。將它放在螞蟻構建之前。 這將調用android update projectandroid update lib-project。確保您使用相對路徑在project.properties中引用了庫依賴項。就像這樣:

# Project target. 
target=Google Inc.:Google APIs:19 
android.library.reference.1=../external-libs/google-play-services_lib 
android.library.reference.2=../external-libs/android-support-v7-appcompat 

add Build Step - Create Android build files