iOS和Mac OS X的跨平台方法有哪些适合的?

3
似乎有很多关于跨平台框架的答案,可以用于设备(iPhone+Android)和桌面(Mac+Win+Linux)。但这个问题与适合的框架、方法论、模板应用程序、教程或者有用提示有关。这些都是开发原生应用程序(而不仅仅是Web应用程序),可以在设备操作系统和桌面操作系统之间实现跨平台移植。
我想编写一个应用程序,既可以在我的iPhone(或iPad)上运行,也可以编译成本机应用程序在Mac OS X上运行(而不仅仅在模拟器中运行)。我愿意接受只使用两个平台通用的基本UI元素(只有1个窗口、通用按钮、文本框等)。
最佳方法是构建一对应用程序,使用最少的#ifdef和其他平台特定的代码重写,可以在我的iPhone上运行,并在我的MacBook上本地运行。

我正在为我的iPhone编写一个简单的游戏。我希望能够在Mac上玩这个游戏,而不需要启动SDK模拟器。 - hotpaw2
2个回答

3
使用标准UI控件没有简单的方法来实现这一点。AppKit和UIKit是完全不同的东西。即使是基本的UIView和NSView在结构和功能上也非常不同。在那个层面上,你看不到任何可以跨平台的东西。
然而,有一些显示元素可以在Mac和iOS上进行最小改动的工作。核心动画CALayers就是这样一个元素,因为它们在Mac OS X和iOS上是相同的。这就是为什么我们选择将它们作为Core Plot框架的基础,该框架使用几乎相同的代码库在Mac和iOS上显示图形。有一些特定于平台的东西需要调整(例如UIView应用于其背景层的反向坐标系统),但大部分代码都可以转换到两个平台。
你提到写游戏。如果你正在使用OpenGL ES,你编写的大部分渲染代码也将在Mac上工作。有一些东西你需要修改,但大部分OpenGL ES是桌面OpenGL的子集。然而,对于一个简单的2D游戏,我建议你坚持使用核心动画,除非你真的遇到了性能方面的瓶颈,因为你会写更少的代码。
迄今为止,我提到的所有内容都在Model-View-Controller设计模式的View部分中。您的控制器代码将是应用程序特定的,但您可能能够使大部分代码独立于平台。如果您使用简单的模型,甚至依赖于SQLite或Core Data进行持久化,那么使用相同的代码在Mac和iOS上工作应该很容易。
Mac应用程序和iOS应用程序(甚至在各种iOS设备之间)会有非常不同的核心设计。您不能只是将一个平台的东西塞入另一个平台。游戏可能比其他任何东西都更具可移植性,但您仍然需要进行一些自定义工作,以反映每个计算设备的独特属性。

我知道标准UI和NS控件是不同的。我想知道的是,是否有人为两者做了某种抽象层,以允许不需要完全重写UI的东西。使用核心图形进行视图渲染几乎不需要除了翻转y轴坐标的宏之外的任何东西。应该可以在iOS和MacOS之间使用比用于创建Linux / Windows跨平台应用程序更轻量级的东西来实现这一点。希望如此... - hotpaw2

1

我也在努力解决这个问题;我正在使用Unity3D,但免费许可证不允许本机OS X插件。

我刚刚花了最后一个小时阅读http://rayvinly.com/how-to-build-a-truly-universal-framework-for-ios-and-mac-with-just-a-single-codebase/

Ray做了一个超级演示,你可以下载他的30页电子书文档!他还提供了一个模板项目。

我想我可以使用这个设置来创建一个单一的绘图表面(因此,在两个平台上只有一个窗口),我可以使用SpriteKit进行绘制。

然后包装鼠标/触摸输入以创建统一的输入。

至于现成的框架,http://chameleonproject.org/看起来很有趣。

http://kivy.org/#home看起来更加有趣:多平台Python封装GLES2

最终你选择了什么?同时也有http://polycode.org/http://qt-project.org/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接