【问题标题】:Converting a WIndows Store MonoGame app to Android将 WIndows Store MonoGame 应用程序转换为 Android
【发布时间】:2015-03-01 10:14:20
【问题描述】:

我对 Xamarin 很陌生。我有一些已发布的 Windows 应用商店应用程序并希望将它们转换为 Android。我正在尝试为此使用 Xamarin。我只是在使用 Xamarin 的免费版本。这是我到目前为止的位置:

我正在尝试两个应用程序 - 一个是使用 Monogame 构建的,一个是基于 WinRT 框架构建的。 我已经设法让它们都进入 Xamarin 工作室,基本上是通过破解 csproj 文件。

我收到构建错误,因为它缺少引用。似乎确实有一些等效的 Mono / .Net4 库,但像 Storage 这样的东西似乎不见了。

所以,我的问题是:我是否以正确的方式进行此操作,如果是,我是否缺少步骤(“转换依赖项”或其他内容)?

如果我没有以正确的方式解决这个问题,那么我应该怎么做(我发现关于这个主题的在线资源很少)?

编辑:

以下是我从 Xamarin 应用程序中得到的一些特定错误:

还有我的参考资料:

编辑:

经过进一步研究,我无法解释为缺少的唯一依赖项是Microsoft.Xna.*。其他的在 Android / iOS 上都有不同的实现。

【问题讨论】:

  • 您的代码显然是特定于平台的。你需要把它抽象出来。没有一个向导可以获取任意代码并使其在 Android 上运行(至少现在还没有)。
  • 我也遇到了与 Microsoft.Xna.Framework 相关的错误,我知道这是 Monogame 框架的一部分。
  • 我认为您需要发布一些您遇到的特定错误。解决一两个可能有助于解决其余的问题,但还是发布几个。
  • 我已经添加了从一个特定文件中得到的错误。
  • 为什么不从头开始创建项目? PS:交叉发帖到forums.xamarin.comcommunity.monogame.net

标签: c# android xamarin monogame


【解决方案1】:

您将能够将大部分现有代码与 Xamarin 一起使用。

但是,您在使用这些特定库时遇到的错误是因为 iOS 和 Android 中的 Xamarin 不存在它们。因此,无论您拥有什么功能,您都需要使用可用的库进行返工。

例如,您可以使用 Android.OS.Storage,而不是使用 Windows.Storage。

详情请参阅他们的文档: http://androidapi.xamarin.com/index.aspx?link=N%3AAndroid.OS.Storage

编辑 对于 XNA,如果您使用 MonoGame,所有这些都应该可以移植: https://github.com/mono/MonoGame/wiki

我不知道为什么它没有捆绑在 Xamarin 中,但这会让你着迷。

编辑 这取自此处的 Xamarin 文档:http://developer.xamarin.com/guides/cross-platform/cocos2d_xna/cocos2dxna_tutorial/

创建项目后,需要将各种Cocos2D-XNA依赖添加到解决方案中。从您下载 Cocos2D-XNA 和 MonoGame 源代码的位置添加以下项目:

box2d.iOS – 2D physics library. We’ll use this in later tutorials.
cocos2d.iOS – Cocos2D-XNA for iOS.
Lidgren.Network.iOS – Networking library used by MonoGame.
MonoGame.Framework.iOS – MonoGame for iOS.

【讨论】:

  • 好的,我使用 Windows.Storage 达到了那个阶段。但是 XNA 命名空间不存在。这肯定是单体游戏的全部关键吗?
  • Windows.Data.Xml.Dom 可能不会在 android 上可用。考虑将 System.Xml.Linq 与 XDocument、XElement 和 XAttribute 一起使用。你可以做的是使用条件编译。创建四个配置平台,将它们称为 Windows Debug 和 Windows Release 以及一个 Android Debug 和 Android Release。然后在每个平台目标WINDOWS WIN_DEBUG、WINDOWS WIN_RELEASE、ANDROID AN_DEBUG、ANDROID AN_RELEASE的属性中定义符号。然后为 Android 上不支持的东西构建单声道替换并包装特定于平台的代码#if ANROID{}
  • 我可能在这里遗漏了一些东西。我看过monogame GitHub Page。我已经下载了这个(这样我就可以首先创建商店游戏),那么我需要如何以不同的方式安装 monogame 才能让 Android 识别它?
【解决方案2】:

此视频可能会回答您的问题。如果存在,您很可能需要将引用替换为 PCL 等效项。

http://developer.xamarin.com/videos/cross-platform/any/

【讨论】:

  • 我想我以前看过这个视频。我会再看一遍,但我不记得有人提到过 Monogame。
猜你喜欢
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
相关资源
最近更新 更多