【问题标题】:How can I activate Xamarin.Android for use on a CI server?如何激活 Xamarin.Android 以在 CI 服务器上使用?
【发布时间】:2014-04-28 08:22:18
【问题描述】:

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

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

C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(299,2):错误 XA9008:从命令行构建需要ÿBusinessÿ许可证。

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

很遗憾,我在此工具上找不到任何合适的文档。每次我找到有人讨论这个问题的线程时,Xamarin 的某个人就会跳进来说“联系 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"

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

\mandroid.exe : monodroid: error XA9997: 为完成激活提供的数据不完整

在“激活问题?”产品页面的部分,上面写着:

在 Android 1.0.21316 及更高版本的 Mono 中,如果在 Visual Studio 中激活失败,则会在 Documents 文件夹中创建一个 MfaActivation.dat 文件。在下面选择这个文件。

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

【问题讨论】:

    标签: xamarin.android xamarin


    【解决方案1】:

    更新 - 恐怕以下步骤不再有效。 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
    

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

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

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

    【讨论】:

      【解决方案2】:

      从 Xamarin 文档中,我们可以看到

      http://docs.xamarin.com/guides/cross-platform/ci/configuring_tfs/

      “必须在团队中安装 Visual Studio Professional(或更高版本) Foundation Server 以及 Xamarin.Android 的许可副本和 Xamarin.iOS 支持 Android 和 iOS 移动开发 通过 Team Foundation Server 应用程序。”

      所以我假设在所有情况下您都需要安装和激活 VS + Xamarin 产品。

      我可能错了,所以最好的方法是联系 Xamarin 支持,http://xamarin.com/support

      【讨论】:

      • 我真的希望不是因为那太可怕了。不过感谢您的发现,我似乎错过了那个链接。
      • 荒谬的是,一个人必须安装 VS 和 Xamarin 才能构建一个项目。这些开发人员需要从 Adob​​e 中吸取教训,在那里我可以使用完全在 Flash IDE 之外的免费编译器构建 Flex 应用程序,只需为其提供类和 SWC 资源文件。
      • @Triynko 但 Flex 已死,而 Xamarin 仍然存在。 Adobe 有钱,甚至可以接受一些产品被破解,但并不是每个公司都能这样生存。
      猜你喜欢
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多