跨移动平台编程[关闭]
Posted
技术标签:
【中文标题】跨移动平台编程[关闭]【英文标题】:cross mobile platforms programming [closed] 【发布时间】:2012-02-16 11:26:52 【问题描述】:我是移动开发新手,我对开发适用于 ios、android 和 Windows Phone 7 的应用程序很感兴趣。我希望编写更少的代码。目前我认为 C++ 可能很适合。
我所知道的是: 对于 iOS,即使在一个文件中也可以将 C++ 与 Objective-C 一起使用,而且我可以链接我的 c++ 库。
可以在 Android 上通过 NDK 使用 C++。 所以我可以用 C++ 编写我的大部分应用程序(除了一些非常特定的平台相关部分)并通过某种暴露的 Facade 调用我的应用程序,对吗?
windows phone 7 可以做什么?我知道它是基于.Net 的。在 .NET 中,可以从 c++ win32 dll 调用代码。但是wp7呢?我不想将所有内容都重写为 C#。
或者,也许所有这些跨平台游戏都不是好主意。有一些关键的陷阱吗?也许最好让 Obj-C 只用于 iOS,Java 只用于 Android,C# 只用它的 silverlight 和 xna,并单独维护所有这个动物园?
有经验的移动开发者请分享您的经验。
【问题讨论】:
【参考方案1】:Windows Phone 7 尚不支持本机代码。看看这个问题了解更多信息:Is it possible to program for Windows Phone 7 in standard C++ only?
如果您想为这 3 个平台编写代码并重用您编写的大量内容,您可以使用 C# 编写代码并使用 Mono from Xamarin 在 iOS 和 Android 上运行您的代码。
【讨论】:
【参考方案2】:请注意,在 Android 上,不完全支持 C++。更多的是关于纯 C。
在 Android 上用 C 语言编程基本上是为游戏保留的。如果您不想在 OpenGL 中制作您的 UI,请忘记它并用 Java 编写它。无论如何,您都需要一个小型 Java 包装器。
这同样适用于 iOS - 如果您只使用 OpenGL,您可以用 C 编写所有内容并仅将 obj-c 用作小型应用程序包装器。
从中可以看出,这主要是为游戏保留的。有可用的工具(例如http://www.madewithmarmalade.com/)可以帮助您轻松开发openGL游戏)
平台之间的主要区别在于不同的 UI 框架。有一些工具可以帮助您克服这些差异——它们中的大多数都基于 html 5,并且它们使用 CSS 来模拟原生 UI。通常你必须牺牲很多用户体验。
您必须了解,如果您希望您的应用程序在不同的平台上看起来完美,您必须为每个平台单独编写 UI,并以本机方式编写。甚至 UI 设计也必须有所不同。 iPhone 和 iPad 需要很多很酷的动画,它们必须非常适合纵向和横向模式(包括旋转动画),使用导航栏、工具栏、拆分视图...... Android 用户期望其他东西 - 一个不同的(菜单)工具栏,你需要移植到很多不同的屏幕分辨率,用户体验会有所不同。
我建议从原生 iOS 开始,如果应用程序有利可图(如果这是您的应用程序的原因),则为其他平台开发它。 iOS 应用总是能赚到最多的钱。
【讨论】:
【参考方案3】:看看phonegap。它声称是跨平台的,尽管我确信它将功能归结为一个共同点。
【讨论】:
【参考方案4】:目前现有的平台中,大部分都支持HTML5,javascript包括iOS、Android和WP7或即将推出的WP8也可能支持。
因此建议使用 HTML5 和 javascript 编写应用程序。
相同的 JavaScript HTML5 应用程序可以通过使用为多个平台提供库的框架(例如 PhoneGap)部署在各个平台上
Morever PhoneGap 是免费使用的开源移动框架。
您也可以参考以下链接获取Top five HTML5 frameworks for Mobile developement.
【讨论】:
【参考方案5】:我在使用Titanium Appcelerator 为 iOS 和 Android 开发应用程序方面拥有相当丰富的经验。代码用 JavaScript 编写并映射到本机调用,因此您可以获得本机外观。
PhoneGap 有不同的方法。该应用程序是用 HTML、CSS 和 Javascript 编写的。优点是它支持更多不同的平台。包括 iOS、Android 和 Windows Phone 7。
【讨论】:
【参考方案6】:您是否看过 Xamarin 的 MonoTouch 和 Mono? http://xamarin.com/
他们说您可以重用多达 90% 的应用逻辑,并通过访问所有原生平台 API 和设备传感器来创建设备原生用户体验/UI。
【讨论】:
我做到了。但我不确定与真正的原生应用程序相比的性能。性能和内存呢?我敢肯定,对于商业应用程序来说它会很好,但对于游戏或其他图形和繁重计算的应用程序,我不确定。以上是关于跨移动平台编程[关闭]的主要内容,如果未能解决你的问题,请参考以下文章