2016-04-29 94 views
0

我試圖建立一個TFS Build agent自動構建我Xamarin.Android項目在每張支票的時候。缺少的Android NDK工具鏈目錄「工具鏈」與託管TFS建設Xamarin.Android構建服務器

我按照步驟這裏概述:https://msdn.microsoft.com/library/vs/alm/build/apps/xamarin用於設置Hosted構建代理。

TFS構建模板也有一個Xamarin.Android模板,您期望這個模板意味着它們已準備就緒。這也從其中規定,你可以在託管池

建立一個Xamarin.Android的解決方案,但我不斷收到建設項目的下列錯誤上面的鏈接備份:

缺少的Android NDK工具鏈目錄「\工具鏈。請安裝 了Android NDK

我發現在Xamarin https://developer.xamarin.com/guides/cross-platform/ci/configuring_tfs/tfs-and-xa/一個鏈接,說我需要登錄到構建機器複製並粘貼了Android NDK到我的遠程計算機。

但顯然與託管池,我無法登錄到機器上。

我在設置中丟失了什麼?

+0

一如果我改變這個'調試'而不是'發佈'建立它的工作原理 – user1

+0

另外需要注意的是,我可以在本地機器上使用相同的源進行'發佈'構建 – user1

+0

您可以共享失敗的整個日誌建立? –

回答

1

分步指導如何解決這個問題。

如果你能,我會建議使用Visual Studio 2015更新2與Xamarin和this link設置自己的生成主機。這樣做後,您可以使用this Xamarin link來確保。 1.你的Java SDK和NDK是在本地(非用戶特定區域,如果你使用Visual Studio的他們應該是安裝的)和環境變量已添加(從Xamarin鏈接):

調整環境變量在自動構建過程中 Xamarin.Android將需要訪問以上調整的 路徑上的Android SDK和NDK。最好通過設置ot 來調整幾個服務器範圍內的環境變量:

如果還沒有,請以Administrator身份登錄到TFS機器。打開 控制面板,在搜索框中鍵入環境中,選擇編輯 系統環境變量,然後單擊環境 變量...按鈕,彈出如下對話框:

在系統變量選擇ANDROID_HOME,然後單擊編輯...,或者如果 ANDROID_HOME不存在,單擊新建...來創建它:

將值設置到C:\ Android的SDK(或你的移動SDK)和 單擊確定。在系統變量選擇ANDROID_NDK_PATH並單擊 編輯...(或新建...如果需要的話):

將值設置到C:\ Android的NDK \ Android的NDK-R 8d中(或任何你感動 的NDK),然後單擊確定。請注意,您確實需要 此值中的第二個文件夾名稱。選擇路徑變量,單擊編輯...按鈕,然後將 ; c:\ android-sdk(或您使用的任何文件夾)追加到路徑 的末尾,然後單擊確定。不要忘記在此條目和以前的條目之間包含分號(;)分隔符 。

通過打開命令提示符,輸入Set,然後檢查變量來驗證更改。 Team Foundation Server現在應該能夠在團隊項目中構建Android應用程序 。

之後,您必須在您的project.Android.csproj文件中設置以下屬性爲False

在記事本打開該文件, 去發佈配置部分 並設置以下爲false:

<AndroidUseSharedRuntime>False</AndroidUseSharedRuntime> 
<EmbedAssembliesIntoApk>False</EmbedAssembliesIntoApk> 
<BundleAssemblies>False</BundleAssemblies> 

您的項目現在將建立一個託管池!

儘管我認爲這隱藏了真正的問題,因爲將它們設置爲true會構建在本地構建代理上。

我認爲微軟託管池丟失了Android NDK環境變量,它不在TFS能力

1

有上Xamarin論壇同一個問題,下面是它的解決方案:

修正:作爲一個更新,如果建築 發行(該NDK \工具鏈,當別人有這個問題的人丟失)似乎mkbundle 已損壞。

根本原因是「MakeBundleNativeCodeExternal」對於 版本爲true,對於Debug爲false。儘管這看起來像是許可 問題,但我的構建代理安裝了Enterprise許可證。

禁用「MakeBundleNativeCodeExternal」在版本編輯 在記事本的Android項目,爲SEACH「BundleAssemblies」建設 - 和 下釋放配置部分改變「真」「假」 保存,建立發行,作品。

參考此鏈接瞭解詳細信息:Missing Android NDK toolchains directory

+0

最初,這看起來不錯,它可能會解決問題。但不幸的是,更改此屬性仍然給出了相同的錯誤 – user1

+0

@ user1由於沒有任何配置託管構建代理,並且可以在本地計算機上成功完成構建。在找出根本原因之前,可以按照以下說明部署自己的構建代理以運行構建:https://msdn.microsoft.com/en-us/library/vs/alm/build/agents/windows –

+0

我配置了自己的構建代理,並使用Xamarin安裝了VisualStudio 2015 Update 2。這與NDK和JDK一起提供。然後我按照[https://developer.xamarin.com/guides/cross-platform/ci/configuring_tfs/tfs-and-xa/](https://developer.xamarin.com/guides/cross)添加了環境變量-platform/ci/configurations_tfs/tfs-and-xa /)但仍然收到相同的錯誤。我現在可以在VisualStudio Agent Pools功能中看到目錄,甚至可以看到工具鏈目錄,但仍然沒有運氣 – user1

1

原來的問題是關於建立一個Xamarin的Android應用程序在VSTS託管劑和具有錯誤顯示因爲無法找到Android NDK。

是的,如果您禁用諸如EmbedAssembliesIntoApkBundleAssemblies之類的選項,則構建將會正常工作,但這不是真正的解決方案,尤其是當您需要啓用這些選項時。

由於在託管代理上構建時未找到Android NDK路徑,因此解決方案是手動設置Android NDK路徑。 在構建任務,在MSBuild的選項,提供以下附加參數:

  • VS2015託管代理:/p:AndroidNdkDirectory="C:\java\androidsdk\android-ndk-r13b"
  • VS2017託管代理:/p:AndroidNdkDirectory="C:\ProgramData\Microsoft\AndroidNDK64\android-ndk-r13b"

如果您想了解更多關於這問題我寫了一篇文章,會給你更多的細節:

Building a Xamarin Android App with Bundle assemblies into native code option enabled on an Azure Visual Studio Team Services (VSTS) hosted agent (And getting the following error: "Error : Could not find a part of the path 'd:\platforms'."?)

+0

解決了我的OnPremise Agent問題 –