C# 如何同时为*所有*手机/移动设备编写?
我们创建在移动设备上运行的非游戏程序;iPhone、Windows Mobile、Android、Palm WebOS等。我们的主程序是用C#为Windows Mobile编写的,我们被要求将其移植到iPhone。我们不是期望:C# 如何同时为*所有*手机/移动设备编写?,c#,iphone,blackberry,mobile,multiplatform,C#,Iphone,Blackberry,Mobile,Multiplatform,我们创建在移动设备上运行的非游戏程序;iPhone、Windows Mobile、Android、Palm WebOS等。我们的主程序是用C#为Windows Mobile编写的,我们被要求将其移植到iPhone。我们不是期望: 要加快的学习曲线 Objective-C、XCode和Cocoa Touch 维持两个人生活的痛苦 用于保存产品的代码集 在两个不同的平台上同步 我们决定,作为一项战略,我们希望在尽可能多的移动平台上同时创建所有新产品,这是一项艰巨的任务 我们知道我们必须在这些问题上让
- 避免强迫我们的用户 连接到web以使用产品
- 没有一堆不同的场景 源代码
- 支持尽可能多的移动平台 我们可以
现在,我们即将创建许多新的商业应用程序,并希望将其扩展到其他硬件/操作系统。您有什么建议可以在许多新平台上以最少的痛苦部署?考虑通过web实现您的应用程序。这违反了你的“避免用户连接到Web”的偏好,但是考虑Web的原因如下:
使用Iphone的c#应用程序签出。它是iphone的.net framework的OSS版本。考虑Appcelerator Titanium、Rhomobile的Rhodes、PhoneGap、xmlvm.org或其他跨设备工具包。我建议您将应用程序的核心和GUI分开。因此,您可以继续使用C#为Windows mobile和iPhone操作系统开发应用程序(感谢)。使用此策略,您只需在Windows mobile(C#)和iPhone(Cocoa Touch)上开发特定的GUI 对于其他移动操作系统,您不能使用跨平台开发环境(目前)。您需要重新开发所有应用程序 因此:
- windowsmobile:Core(C#)和GUI(C#)
- iPhone:Core(C#)和GUI(Cocoa-Touch)
- Android:Core(Java)和GUI(Java)
- 其他:取决于操作系统
- iPhone-Objective-C是C的一个严格超集,所以只需按原样使用代码即可。并使用Cocoa Touch在Objective-C中编写UI
- Android-Android的Java有JNI用于调用用C编写的本机代码。编写一个薄薄的粘合层,并用Android的普通Java实现您的UI
- Windows Mobile-您可以从任何.NET应用程序调用本机代码。因此,编写另一个东西粘合层,并使用C#或您喜欢的.NET语言实现您的UI Symbian使用Symbian的一个变种C++,所以就像iPhone一样,你可以调用你的C代码。用C++和Symbian API编写SUI:S/< P> < /LI>
- 我会违背常规,给你一些坚强的爱,而不是简单地回答你提出的问题
我的想法是,为什么您希望制作2-5个版本的应用程序,最多只能在所有平台上获得冷淡的反响?因为这就是你要得到的
如果你想制作出受欢迎的应用程序,并让用户兴奋地使用它们,那么就让他们利用这个平台。iPhone应用程序应该充分考虑用户输入,并尽可能利用多种平台功能,如多点触摸、简易数据存储、加速计、摄像头等
Palm应用程序在后台工作得很好,所以请编写一些充分利用这一点的内容。它甚至可能不止一个应用程序,以保持Palm的简单和小型应用程序方法
Android应用程序可以更紧密地与系统集成,因此让它们这样做对用户有利
你使用任何应用程序的主要好处应该是你完全了解这个领域,并且可以描述问题领域的哪些方面在任何给定设备的优势下工作得最好。移动应用程序很小(ish),您通过尝试在设备之间共享代码而获得的任何微小收益(以及这在Java/Obj-C中到底是如何工作的,更不用说Android与Blackberry库之间的差异了?)都会完全迷失在您通过适应棱镜的理解扭曲中。虚拟化
我听说VMWare正在开发一种移动虚拟化产品,它可以将平台统一到移动设备上VM内的单个执行点,具体取决于您的匆忙程度。它几乎肯定会支持大多数智能手机平台(Windows Mobile、Android、Symbian、黑莓,甚至iPhone)。当他们支持所有人时,他们(和我们)肯定会受益最大
如果您不着急,可以稍等。我假设您已经完成了市场调查,并且实际上知道所有平台都将盈利,而不仅仅是为了一两次开发而耗尽您的资源 除非你打破“不连接互联网”的规则,否则没有什么好的答案。但是有一个很好的答案;普通老C 用普通的旧C语言实现所有应用程序逻辑