我想开发一个同时针对android和iphone的应用程序。我猜他们使用Java和Objective-C。我可以使用像Python这样的单一语言吗?这是最好的路线吗?我会因为使用Python而失去性能、功能等吗。我会遇到什么限制吗?
您不能在Android或iPhone平台上使用Python。这显然被Apple SDK许可证否决了,而Android实际上有一个Android脚本环境,但你很快就会意识到这不是为最终用户准备的。无论如何,iPhone不支持Python这一事实排除了将其作为跨平台选项的可能性。
我认为,构建一个真正支持Android和iPhone的跨平台应用程序的唯一方法是使用HTML5。当然,HTML5应用程序并不是完全本地的,但你可能会想出一个混合设计,使用设备或网站上本地托管的HTML5内容,并在本地veb视图中显示。
纯HTML5应用程序不是完全原生的,因为它们是HTML5,而不是CocoaTouch(Android)应用程序。他们只能做HTML5允许的事情,并且有HTML5的外观和感觉。一个主要的限制是设备上没有可用的特殊硬件,比如加速度计、陀螺仪等等。无论如何,它们提供了很大的灵活性和最大限度的跨平台兼容性。
这是一个极端。另一个极端是"完全原生的应用程序",即在Objective C/Cocoa Touch或Java/Android中开发的应用程序。完全访问SDK、特殊硬件、原生外观,无跨平台兼容性。
还有第三种可能性,那就是混合应用程序。你可以定义一个原生的骨架UI(比如说,在iPhone上,一个基于导航的应用程序),并通过HTML5提供你的视图内容和详细界面。骨架UI不会是可移植的,但它将允许你做更多的事情,而不是在纯HTML5应用程序上。这种方法通常需要在你的应用程序中使用HTML查看器类,这样你就有了:骨架UI+本地web查看器+HTML5内容。
关于"设备上本地托管的HTML5内容":您可以在网络服务器上托管HTML5应用程序,也可以在设备上本地加载(无网络访问)。
phonegap是您可以用来瞄准iphone&android.通过javascript,html。
我所知道的最接近的是MonoTouch和MonoDroid项目。它们允许您编写C#代码,而不是Objective-C(适用于iPhone)和Java(适用于Android)。这个问题出现在UI中,因为不同的UI模型没有通用的抽象。理想情况下,您可以编写核心业务/域/任何代码,使其不与UI绑定,然后以这种方式进行重用。
我还没有看到@Snicolas提到的Appcelerator,但它可能在提供两个平台的整体抽象方面做得更好。
我会考虑咬紧牙关,以最终学习Java和C/Objective-C为最终目标。我这里有一些比较。因此,也许可以用Java/Android编写一个简单的应用程序,然后尝试在iOS/C/Objective C中复制它。如果你以登月为目标,你会忘记你一生中学会了多少语言。