use*_*er1 5 tfs tfsbuild xamarin.android xamarin azure-devops
我正在尝试设置一个在每次签入时自动TFS Build agent构建我的Xamarin.Android项目.
我已按照此处列出的步骤操作:https://msdn.microsoft.com/library/vs/alm/build/apps/xamarin,用于设置托管构建代理.
TFS构建模板也有一个Xamarin.Android 模板,您可以预期它们已准备就绪.这也可以从上面的链接备份,该链接声明您可以Xamarin.Android在托管池上构建解决方案
但是我在构建项目时遇到以下错误:
缺少Android NDK工具链目录'\ toolchains'.请安装Android NDK
我在Xamarin上找到了一个链接https://developer.xamarin.com/guides/cross-platform/ci/configuring_tfs/tfs-and-xa/,其中说我需要登录构建机器并将Android NDK复制并粘贴到我的远程机器.
但很明显,对于托管池,我无法登录到计算机.
我在设置中遗漏了什么吗?
最初的问题是在Azure DevOps托管代理上构建Xamarin Android应用程序并出现错误,因为无法找到Android NDK.
是的,如果你禁用类似的选项构建将工作EmbedAssembliesIntoApk或BundleAssemblies,但是这是不是一个真正的解决方案,尤其是当你需要启用这些选项.
由于在托管代理上构建时未找到Android NDK路径,因此解决方案是手动设置Android NDK路径.在构建任务的MSBuild选项中,提供以下附加参数:
/p:AndroidNdkDirectory="C:\java\androidsdk\android-ndk-r13b"/p:AndroidNdkDirectory="$(latestAndroidNDKPath)"如果您想了解更多有关此问题的信息,我写了一篇文章,为您提供更多详细信息:
如何在VS2017托管代理上检索最新的Android NDK:
$ndk_root = "C:\Microsoft\AndroidNDK64\"
if(Test-Path $ndk_root) {
$androidNDKs = Get-ChildItem -Path $ndk_root | Sort-Object -Property Name -Descending | Select-Object -First 1
$latestAndroidNDK = $androidNDKs.FullName;
Write-Host "##vso[task.setvariable variable=latestAndroidNDKPath]$latestAndroidNDK"
} else {
Write-Host "NDK is not installed at path $ndk_root"
exit 1
}
Write-Host Variable '$(latestAndroidNDKPath)' is $latestAndroidNDK
Run Code Online (Sandbox Code Playgroud)
解决此问题的分步指南。
\n\n如果可以的话,我建议您使用带有 Xamarin 的 Visual Studio 2015 Update 2 和此链接来设置您自己的构建主机。执行此操作后,您可以使用此 Xamarin 链接进行确认。1.您的java SDK和NDK位于本地(非用户特定区域,如果您使用Visual Studio安装,则它们应该位于本地)并且已添加环境变量(来自Xamarin链接):
\n\n\n\n\n调整环境变量 在自动生成过程中\n Xamarin.Android 将需要访问\n 上面调整的路径中的 Android SDK 和 NDK。最好通过设置或调整几个服务器范围的环境变量来完成此操作:
\n\n如果尚未登录,请以管理员身份登录到 TFS 计算机。打开控制面板,在搜索框中键入环境,选择编辑系统环境变量,然后单击环境变量...按钮以显示以下对话框:
\n\n在“系统变量”下,选择 ANDROID_HOME 并单击“编辑\xe2\x80\xa6”,或者如果\n ANDROID_HOME 不\xe2\x80\x99 存在,请单击“新建\xe2\x80\xa6”进行创建:
\n\n将值设置为 c:\\android-sdk(或将 SDK 移动到的位置),然后单击“确定”。在系统变量下,选择 ANDROID_NDK_PATH 并单击\n Edit\xe2\x80\xa6(或 New\xe2\x80\xa6,如有必要):
\n\n将值设置为 c:\\android-ndk\\android-ndk-r8d(或移动 NDK 的任何位置),然后单击“确定”。请注意,您确实需要此值中的第二个文件夹名称。选择 Path 变量,单击 Edit\xe2\x80\xa6 按钮,然后将 ;c:\\android-sdk(或您使用的任何文件夹)附加到路径末尾\n,然后单击“确定”。不要忘记\xe2\x80\x99 在该条目和之前的条目之间添加分号 (;) 分隔符。
\n\n通过打开命令提示符、输入 Set 并\n 检查变量来验证更改。Team Foundation Server 现在应该能够在团队项目中\n 构建 Android 应用程序。
\n
之后,您必须False在 project.Android.csproj 文件中设置以下属性。
在记事本中打开该文件,\n转到发布配置部分\n并将以下内容设置为 false:
\n\n<AndroidUseSharedRuntime>False</AndroidUseSharedRuntime>\n<EmbedAssembliesIntoApk>False</EmbedAssembliesIntoApk>\n<BundleAssemblies>False</BundleAssemblies>\nRun Code Online (Sandbox Code Playgroud)\n\n您的项目现在将构建在托管池上!
\n\n尽管我认为这隐藏了真正的问题,因为将这些设置为 true 将在您的本地构建代理上构建。
\n\n我认为 microsoft 托管池缺少 Android NDK 环境变量,因为它没有显示在 TFS 的功能中
\n| 归档时间: |
|
| 查看次数: |
3127 次 |
| 最近记录: |