2016-04-29 91 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问题 –