2010-05-07 108 views
7

很明显,Apple App Store不允许交叉编译器,所以开发人员需要熟悉Objective-C为iPhone创建应用程序。Objective-C到Java交叉编译器

我在想,是否有一个交叉编译器将采用Objective-C应用程序代码并将其重建为可以打包为Android的类似Java应用程序?这样,开发人员仍然可以学习一种语言(obj-c),但在许多设备上放出应用程序。

我知道Java端口不如本机编码的应用程序优化,但可以想见一段时间可以节省开发人员。

编辑: 是的,应用程序将是可怕的。但是,它们会不会像通过单点触摸或闪存交叉编译器构建的那样糟糕?难道不能使用这些交叉编译器使用的相同方法吗?

+0

斯特拉SDK理应转换您的iOS应用到Android等格式:HTTP://www.yeecco。 com/stella – jsherk 2012-07-28 14:39:37

回答

7

我还没有听说过交叉编译器会做你所问的。即使有人存在,更大的问题是框架(UIKit,CoreAnimation等)在两个平台之间会有很大的不同。如果没有某种通用框架,所有与框架接口的代码将不得不重新设计。

+0

这里的通用框架:http://github.com/rcmcastro/cocoatouch-for-android – rcmcastro 2016-08-02 05:53:12

-1

这样的编译器的问题是它会产生可怕的应用程序。 Android有一个(更好的)不同的应用程序结构模型 - 而iPhone应用程序更传统,Android应用程序更好地集成到系统中(通过活动,视图,服务和意图)。

最大的挑战不是主要的代码,而是UI和系统库。如果所有的观点都是XIB,那么希望很小。

3

没有机会。一般来说,从像C这样的低级语言转换为像Java这样稍微高级的语言会导致一些非最优代码。

但这甚至不是最糟糕的部分 - 您还需要在两种截然不同的应用程序模型之间进行转换。你可能不得不重新实现Cocoa Touch的大部分功能,以此作为Android的一项功能,或者试图找出iPhone应用程序的实际功能并找出相应的Android成语。

更可能的路径就像GNUstep一样,但我不知道是否有人真的在为GNUstep实现UIKit层,并且最终会得到一个本地应用程序,而不是一个Java应用程序。

+1

Objective-C是一种更高级的语言,就像Java一样......我有十多年的Java编程经验我的腰带,以及iPhone SDK发布以来的全部Objective-C工作(甚至在此之前)。 – 2010-05-09 02:16:22

+0

澄清 - 您可以在Objective-C代码中使用像函数指针,手动内存分配,位掩码和位域以及其他C特性。 Java程序必须用重量更重的东西模拟这些结构。 – 2010-05-25 19:00:56

+0

我们完全在apportable做到了这一点。 – 2013-07-05 02:27:48

1

有一个名为XML虚拟机的项目,与您所要求的类似。在我了解Objective-C之前,我对此感兴趣。据我所知,从Java到iPhone的交叉编译是可能的(有一些限制)。项目仍在开发中。 您可以通过XML VM webpage结帐它的网页。

也许XML VM的ppl可以回答你的问题(如果他们计划创建从Objective-C到Java的交叉编译)。

但我仍然声称,使应用程序两次(为每个平台使用不同的语言和工具)肯定会给出更好的结果。

4

此问题已由Apportable解决。它使用clang和Apple的Objective-c运行时,并且本机编译为Android。它还以很好的方式与JNI桥接,以便在Android中访问。您无需转换为Java,因为它是针对在设备上运行的本机ARM架构进行编译(它甚至有时可能比设备上的Dalvik/Java更快),因此性能没有任何成本损失。它还具有一个UIKit端口,可以很好地映射一切。

+0

这很酷。尽管如此,网站上的文档相当稀少。除了UIKit,它支持哪些框架? – 2013-07-13 21:07:32

+0

1000美元来使用UIKit?谢谢,但不是谢谢。 – 2013-07-17 20:54:51

+0

您可以使用UIKit而无需支付$ 1000。 – 2013-07-18 22:25:15

1

是的,有一个应用程序将Objective-C转换为Java。您仍然需要了解一些Java,但它可以节省您大量时间移植到Android。它带有一个Android兼容性项目,您可以在eclipse中添加它作为依赖项。它具有可定制的类型和方法映射,您可以使用模板系统指定方法映射。

看看这里... O2J - Objective-C to Java Converter

这里是他们如何对视频... O2J Howto Video

+0

谢谢@Cal。这是至少有点帮助的唯一解决方案,其他人不工作或不存在了。 – 2016-10-18 11:09:59