2010-08-29 41 views
3

設備(iPhone + Android)的跨平臺框架和桌面(Mac + Win + Linux)的跨平臺框架似乎有很多答案。這是一個關於合適的框架,方法,模板應用程序,教程或僅有幫助的提示,關於在設備操作系統和桌面操作系統之間跨平臺移植的原生應用程序(而不僅僅是網絡應用程序)的不同問題。適用於iOS和Mac OS X的跨平臺方法是什麼?

我想編寫一個應用程序,可以在我的iPhone(或iPad)上運行,也可以編譯爲在Mac OS X上本機運行(而不僅僅是在模擬器中運行)。我願意只使用兩種平臺通用的基本UI元素(只有1個窗口,通用按鈕,文本字段等)

建立一對應用程序的最佳方法是什麼,最小數量爲# ifdef和其他平臺特定的代碼重寫,這將在我的iPhone上運行,並在我的MacBook上本地運行?

+0

我有一個簡單的遊戲,我正在爲我的iPhone寫作。我希望能夠在不啓動SDK模擬器的情況下在我的Mac上播放它。 – hotpaw2 2010-08-29 20:24:47

回答

3

有沒有簡單的方法來使用標準的UI控件來做到這一點。 AppKit和UIKit是完全不同的動物。即使基本的UIView和NSView在結構和功能上也有很大的不同。在那個層面上,你不會看到任何可以跨平臺的東西。

但是,有些顯示元素可以在Mac和iOS上工作,只需要很少的更改。核心動畫CALayers就是這樣一個元素,因爲它們在Mac OS X和iOS上是相同的。這就是爲什麼我們選擇將它們用作Core Plot框架的基礎,該框架使用幾乎相同的代碼庫在Mac和iOS上顯示圖形。有幾個特定於平臺的東西需要調整(如UIView應用於其背景層的倒置座標系),但大多數代碼都會轉換爲兩個平臺。

你提到寫遊戲。如果您正在使用OpenGL ES,那麼您編寫的大部分渲染代碼也可以在Mac上使用。有幾件事情需要改變,但大多數情況下,OpenGL ES是桌面OpenGL的一個子集。然而,對於一個簡單的2-D遊戲,我建議堅持使用Core Animation,除非你真的碰到了磚牆,性能明智,僅僅因爲你會寫更少的代碼。

到目前爲止我所提到的項目都在模型 - 視圖 - 控制器設計模式的視圖部分。您的控制器代碼將是特定於應用程序的,但您可能可以使大部分平臺無關。如果您使用簡單模型,或者使用SQLite或Core Data來實現持久性,那麼使用相同的代碼在Mac和iOS上工作應該是微不足道的。

Mac應用程序和iOS應用程序(甚至在各種iOS設備之間)將具有非常不同的內核設計。你不能只是從某個平臺上將某些東西強加給另一個平臺。遊戲可能比任何其他遊戲都更便於攜帶,但您仍然需要進行一些自定義工作以反映每個計算設備的獨特屬性。

+0

我知道標準的UI和NS控件是不同的。我想知道的是,如果任何人都爲某種抽象層做了某種抽象層,以允許不需要完全重寫UI的東西。除了用於翻轉的y軸座標的宏之外,使用Core Graphics的視圖渲染東西幾乎不需要。 應該可以在iOS和MacOS之間做一些比用於創建的東西更輕量級的東西,例如linux/Windows跨平臺應用程序。人們會希望... – hotpaw2 2010-08-30 07:28:21

1

我也在爲這個而苦苦掙扎;我正在使用Unity3D,並且免費許可證不允許本機OS X插件。

我剛剛度過的最後一個小時,通過http://rayvinly.com/how-to-build-a-truly-universal-framework-for-ios-and-mac-with-just-a-single-codebase/

雷做了超介紹,看過之後你可以下載他的30頁的電子書文件!他還提供了一個模板項目。

我想我可以使用這個設置來創建一個單一的繪圖表面(所以​​,在這兩個平臺上的一個窗口),我可以使用SpriteKit繪製。

然後包裝鼠標/觸摸輸入以創建一個統一的輸入。

至於現成的框架,http://chameleonproject.org/看起來很有趣。

http://kivy.org/#home看起來更有意思:多平臺的Python包裝GLES2

而且http://polycode.org/http://qt-project.org/

你到底選擇什麼樣的?

相關問題