2013-03-04 47 views
26

我想嘗試編寫和編譯iOS和Android設備的C++代碼。我一直在使用XCode(我正在爲MacOS和Windows編寫C++代碼)。所以我想爲我的目的使用XCode。爲iOS和Android編譯C++代碼(XCode)。這是真的嗎?

問題是我不知道如何編譯適用於Android設備和iPad/iPhone的C++代碼。我想爲iOS和Android使用跨平臺解決方案,但不想使用Marmalade(C++)或其他框架。

它是真的還是不是? :)是否有教程或其他有用的材料?

+1

您是否嘗試先進行谷歌搜索? – crashmstr 2013-03-04 21:20:57

+0

我不瞭解iOS,但Android本質上是Java,所以可以通過JNI使用C++代碼。 – Motes 2013-03-04 21:22:15

+0

如果你不介意c#,你可以使用Xamarin http://xamarin.com/monotouch – AedonEtLIRA 2013-03-04 21:23:04

回答

58

你絕對可以在iOS和Android上使用C++。我爲自己編寫了自己的遊戲引擎。

Xcode是iOS的普通IDE,本地支持「Objective-C++」開發(編譯器支持Objective-CC++)。您需要在Objective-C中編寫一個薄包裝來與操作系統交互,但如果您願意,您可以使用C++編寫其他所有內容。如果您下載Xcode命令行工具,您還可以從腳本構建。

Eclipse是Android的常用IDE,如果您下載NDK,則可以使用JNI在Java和C++之間進行接口。就像iOS一樣,您至少需要一個Java包裝器才能與操作系統進行交互。

但是,您不僅限於Eclipse和Xcode。例如,您可以使用emacs和/或僱用CMake來讓您嘗試併合並項目設置。 Emacs是一個非常強大和靈活的IDE,但它具有非常陡峭的學習曲線,並且不是非常簡單的安裝。如果你在Mac上這樣做,我會推薦emacsformacosx並安裝ECBautocomplete以及。 CMake基本上是一個跨平臺構建系統,它允許您從一個源代碼樹構建許多不同的項目文件(Visual Studio,Xcode,Eclipse等)。就像emacs一樣,這是超級強大的,但有點陡峭的學習曲線。如果你想馬上跳進來,你可能會想用Xcode和Eclipse開始。如果您正在PC上開發,則需要Mac VM或Hackintosh才能使用Xcode和cygwin來使用Android的NDK(Macbook Pro用戶可以馬上享受樂趣)。

本機Android開發肯定要困難得多。您不僅需要更多的設備細分來應對,而且本地調試並不是非常簡單。您必須在設備上運行GDB服務器並連接它以設置斷點,許多人從命令行執行此操作。我聽說有些人在Eclipse的Tegra Tools上成功,如果你想要一個基於GUI的IDE。

我肯定會推薦先在iOS上開發,因爲您可以從IDE處理更強大的工具。您可以跟蹤內存泄漏,配置文件代碼,輕鬆設置斷點;等等)。一旦您在iOS上開發功能,您就可以使用.mk文件和Android本機開發的其他優點來摔跤。

這裏是iOS版的核心對象和生命週期的一些信息:

和Android的:

只要你和操作系統兼容並且尊重應用程序的生命週期,你就可以自由地調用C++邏輯。您可以直接在iOS中執行此操作,但通過Android,您必須通過JNI進行調用。如果你封裝了特定的平臺,你可以在兩個平臺之間共享C++邏輯。

我是一個C++的大力倡導者,但是使用它的選擇取決於這些平臺的情況。 C++並不是這些平臺的流行選擇,因此您不會找到儘可能多的文檔(大多數情況下都是您自己的)。如果您不熟悉C++,複雜性可能會上升一點(您是否熟悉RAIIdesign patters,STL?)。

這裏有一些情況下它可能是有意義的:

  • 如果您需要利用這是用C編寫庫/ C++
  • 如果你想建立自己的平臺無關框架您的應用程序或遊戲
  • 如果您正在使用的實時/性能的關鍵應用,如遊戲上的工作

我不是說你MUST在這些情況下使用C++,因爲許多人已經在Objective-C中開發遊戲。我只是說這可能是需要考慮的事情,如果你需要充分利用硬件或者只是想要更便攜的東西。

+0

非常有趣!你有沒有關於你在這篇文章中討論的內容的一些教程? :) – JavaRunner 2013-03-04 21:42:48

+1

這個話題非常貼近我的心,因爲我在遊戲行業工作,在業餘時間也愛好它。我一定會試着擴展這篇文章,以提供更清晰的內容。 – 2013-03-04 21:47:15

+0

這將是非常酷! :)我從來沒有爲iOS開發過,但我有一些Android開發經驗(使用Eclipse)。但現在我想嘗試「移植」到C++和XCode。我想構建自己的遊戲框架(簡單但快速:))。 – JavaRunner 2013-03-04 21:54:26