2010-05-07 89 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