2010-12-20 48 views
7

我想將使用C++編寫的應用程序移植到android。將應用程序從C++轉換爲Java將需要做大量的工作,我傾向於使用更好的應用程序來代替修復轉換錯誤並解決重構問題。Android是否真的存在於ARM以外的其他平臺上?

NDK似乎是一個很好的途徑,但實際上我不想錯過一個平臺(如果它是相當大的市場份額),只是因爲NDK不支持或不支持它。 Android聲稱支持MIPS,ARM,X86和其他...但實際上我看到的所有實現都只在ARM(或ARM兼容)上實現。 我檢查過這個網站: http://www.pdadb.net/

使用NDK會是一個糟糕的決定嗎?
是否有任何非ARM設備運行或將運行Android?
我在哪裏可以找到關於此的更多信息?

在此先感謝!

+3

很好,應該是隻編譯到不同的弓,如果當有人實際運行在不同的Android拱的事。除非你使用內聯彙編或其他東西。 – ewanm89 2010-12-20 13:42:33

+0

你是否完成了你的遊戲?我很樂意演奏它。 – 2012-03-02 08:03:13

+0

也請分享您改編的解決方案 – 2012-03-02 08:03:22

回答

5

此時問題不在於你會不會失去市場份額,由於CPU架構,因爲有目前很少有非ARM的Android設備,問題在於您可能會因爲要求用戶運行Android 2.3或更高版本而失去市場份額,您必須使用它才能創建可訪問窗口,傳感器和輸入子系統的完全本機應用程序。

避免重寫代碼是一個不錯的目標,但由於Android的不同窗口和生命週期API,您可能必須重寫部分代碼。現在你必須用C++而不是Java來重寫代碼的一些重要部分。

您可以嘗試一種混合方法,即在Java中編寫大部分UI,然後調用您現有的C++代碼。

你在製作遊戲嗎?那麼你可能會想要處理這些問題,然後用NDK繼續。如果沒有,儘量在Java中實現儘可能多的程序,並使用NDK來處理代碼中複雜,經過測試的部分,這些部分需要很快。

+0

是啊!遊戲而已。忘了說:P基本上我會用Java來完成OpenGLES/Sound和系統調用。但我不想觸摸C++代碼,因爲它只需要轉換它就需要很多工作。 我的計劃是使用Android 2.1,它在幾個月內似乎會超過95%(可能我會支持1.6以上) 我的恐懼是必須在6個月內用java重做遊戲。我怎麼能確定我會好起來的? – user548569 2010-12-20 21:05:30

+0

不幸的是,我不能確定你會沒事,但我敢肯定你不會突然發現自己用Java重新編寫它。此外,正如它在NDK文檔中所說的那樣:「您也可以同時構建兩種[ARM]體系結構,並將所有內容存儲在最終的.apk文件中。」所以你會在可預見的未來。祝你好運! – Nate 2010-12-20 23:02:38

3

documentation給出如下:

The latest release of the NDK supports these ARM instruction sets: 

ARMv5TE (including Thumb-1 instructions) 
ARMv7-A (including Thumb-2 and VFPv3-D16 instructions, with optional support for  NEON/VFPv3-D32 instructions) 

Future releases of the NDK will also support: 

x86 instructions (see CPU-ARCH-ABIS.HTML for more information) 
2

使用NDK會不會是一個糟糕的決定?

對於算法,NDK很好。對於遊戲,NDK很好。爲了實現一個普通的應用程序,NDK不會非常有幫助。

是否有任何非ARM設備運行或將運行Android?

Google TV在x86(Atom)上運行。

+0

我認爲你得到了你的同時也沒有錯誤的方式! – richq 2010-12-20 21:19:36

+0

@richq:恩,是的,那真是太糟糕了。我澄清了答案。感謝您指出! – CommonsWare 2010-12-20 21:53:26

相關問題