xamarin.android - 如何激活 Xamarin.Android 以便在 CI 服务器上使用?

标签 xamarin.android xamarin

我的公司拥有 Xamarin.Android 的多个商业许可证,我们想在我们的 CI 服务器上使用它。但是,似乎我需要在我的 CI 服务器上安装完整的 Xamarin 套件,包括 Visual Studio Pro 才能完成这项工作。我的问题是,使用普通的 Xamarin.Android 包,我该如何激活它?

似乎单独安装它会添加用于构建的 Xamarin.Android 工具和库,但我无法找到激活它的方法,因此当我尝试使用 MSBuild 进行构建时,构建失败并出现此错误:

C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(299,2): error XA9008: Building from the command-line requires aÿBusinessÿLicense.

现在,经过一番谷歌搜索后,我发现激活工具名为“mandroid.exe”,可以在 C:\Program Files (x86)\MSBuild\Xamarin\Android 中找到 - 尽管我找到了对这也在 64 位程序文件中。

不幸的是,我找不到任何关于此工具的合适文档。每次我发现有人讨论这个话题时,Xamarin 的人都会跳进来说“contact support@xamarin.com”。过了一会儿,我这样做了,但两个工作日后仍然没有回复,而且我有截止日期,所以我认为公开记录这个过程可能对所有相关人员都有帮助。

我发现的最好的东西来自 thread on the Xamarin mailing list引用此调用:

mandroid.exe --activate --name "NAME" --company "COMPANY" --email "EMAIL" --phone "PHONE" --code "ACTIVATION CODE"

我还发现了此调用的另一种变体,如下所示:

.\mandroid.exe –activate –activation-name="NAME" –activation-phone="PHONE" –activation-company="COMPANY" –activation-code="CODE" –activation-email="EMAIL"

我在这里使用这两种调用尝试了我的帐户数据的许多排列 - 使用来自 products page 的激活码在 Xamarin 商店上。不管怎样,都会发生此错误:

\mandroid.exe : monodroid: error XA9997: Incomplete data provided to complete activation

在“问题激活?”产品页面的一部分,它是这样说的:

In Mono for Android 1.0.21316 and later, if activation within Visual Studio fails then a MfaActivation.dat file will be created within the Documents folder. Select this file below.

也许有一些方法可以强制这个文件由 mandroid.exe 创建?那将非常有帮助。虽然我认为离线激活是完成这项工作的唯一方法,但我会接受任何涉及上传 MfaActivation.dat 或以其他方式调用在线激活机制的答案。

最佳答案

更新 - 恐怕以下步骤不再有效。Xamarin 已更新他们的激活系统以通过不同的方法激活新版本。

最后,我不得不将 Xamarin Studio 作为 Chef 配置的一部分进行安装,并指示管理员手动激活该软件作为创建新构建节点的一部分。我没有运气尝试对修复程序进行逆向工程,如果我这样做了,它可能会再次崩溃。


事实证明我几乎是正确的。我指定的第二个调用实际上是调用此命令的正确方法,但 -- 部分显然被某些博客软件以某种方式转换为 标记。

--activate 动词将通过 Xamarin 的服务器执行在线激活,所以我仍然不确定如果没有 Internet 连接您将如何执行此操作。

作为引用,这是我的做法:

mandroid.exe -v --activate --activation-name "(NAME)" --activation-phone "(PHONE_" --activation-email "(EMAIL)" --activation-company "(COMPANY)" --activation-code "(CODE)"

我不确定 -v 开关的重要性,但如果出现问题,它可能会输出调试信息。

您必须完全按照您的 products page 上指定的方式输入所有信息- 选择您的一个许可证并选择“激活问题?”。但是,您需要输入被许可人名称 - 即在 --activation-name 参数中拥有许可证的用户,该参数必须对应于 --activation-code参数。

完成此操作后,您可以使用返回退出代码的 --activated 开关调用 mandroid:

PS> & .\mandroid.exe --activated
PS> $LastExitCode
0

您还可以重新加载产品页面,您应该会看到所选用户的许可证已经注册了一台新计算机。

这确实会用完另一个激活,但如果您给支持团队发送电子邮件,您可以签署构建服务器协议(protocol),然后我假设他们可以为您的构建节点设置额外的激活。

很遗憾没有更好地记录这件事,因为这已经浪费了我好几天的时间。希望这对遇到相同情况的其他人有所帮助。

关于xamarin.android - 如何激活 Xamarin.Android 以便在 CI 服务器上使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23335993/

相关文章:

java - 从 Android 应用程序获取功耗

c# - Xamarin iOS 更改一些 map 图钉的颜色

azure - Xamarin.Mac Azure 通知中心

android - 清除 SingleChoice ListView 选择

Xamarin Forms 将不同字体大小的标签垂直对齐到同一基线

android - Java.IO.EOFException 通过授权代理从 OkHttpClient 读取

android - Xamarin Listview 不遵循 rtl 方向

Android 模拟器不工作 : Failed to open/qemu. conf,找不到加速器等等

c# - Xamarin Forms - Java.Interop.lz4 访问被拒绝错误

c# - 如何在 Xamarin Android 延迟后运行代码