2015-09-25 82 views
-1

我是一名Java Web開發人員;我本質上是編寫JSP應用程序。我最舒適的環境是Linux,但我在Windows上確實如此。我對Android應用開發知之甚少,而對C++一無所知。這款Android新手如何在Android應用中使用Android NDK和C++代碼?

我最近被委託編寫一個Android應用程序。 Android應用程序本身並不那麼令人生畏,但這裏卻變得複雜。該公司有幾個用C++編寫的預先存在的小部件,他們希望我將它們包含到Android應用程序中。目前它們是獨立的Windows應用程序,但我有源代碼。

我需要知道的是,我可以使用Android NDK在我的Android應用中使用C++代碼嗎?我可以在我的Android應用程序中使用這個預先存在的C++代碼並調用像我在java中的類一樣的函數嗎?然後,我可以將整個工具包和堆棧編譯成單個Android應用程序,並具有我原始代碼的所有功能以及預先存在的小部件?

就像我說的,我對C++一無所知,所以我不知道從哪裏開始。我已經在Android NDK上做了一些閱讀,但由於我沒有C++經驗,並且很少有Android的經驗(只有http://developer.google.com/的一些教程),所以我甚至不知道應該將哪些文件導入到項目中。

謝謝

+0

標記爲脫離主題,因爲該問題過於寬泛,並且不太可能接收到任何非主觀的高質量答案。開始使用某些東西的最佳方式是找到一個教程,然後回過頭來回答問題,並要求澄清您可能遇到的任何困難。 – o0rebelious0o

回答

-1

你還沒有提到你的C++代碼使用哪個框架,這很重要。在一般情況下,它可能是從純粹的Win32 API到Qt的任何東西。

如果沒有Windows上提供的UI庫/框架,Android NDK僅爲您提供純粹的C++(事實上,精簡版,不包含例如std :: string)。如果該C代碼在沒有訪問UI的情況下做了一些複雜的事情,那麼移植它就很有意義;如果它控制用戶界面,它是恕我直言無用的。 你不能在框架之間移植MVC控制器,你將不得不重寫所有的東西。

有一個Qt端口的Android,但我不認爲它適合你(你沒有提到Qt首先)。 Qt很大且很複雜,而且很難一次學習。

有Android的Xamarin/Mono,但它是C#據我所知。

您必須瞭解您的項目中使用的框架是否已移植到Android。如果是的話,你可以使用該端口,如果不是,你將不得不重寫UI。

即使框架已經移植,您可能會花費更少的時間從頭開始重新創建UI,並使用C++內容作爲參考模型,而不是嘗試學習和配置第三方內容。 (這取決於代碼的數量。)最有可能的是UI無論如何都不適合手機。

您不必使用Windows進行Android開發,一切工作在Linux下。 (而且Linux更友好,特別是對Linux人來說:在Linux下你可以grep logcat輸出,Linux終端比Windows命令行更方便用戶使用(可以用鼠標調整大小,字體大小隨着鍵盤快捷鍵),.sh比.bat更好)。

+0

這個答案是非常主觀的「Linux更友好」等,這與被問到的問題甚至不相關,而且它並不試圖回答被問到的問題,「如何」可以這樣做,而不是「可以「完成。 – o0rebelious0o

+0

@ o0rebelious0o「friendly」 - 在windows和Linux下,你是否使用命令行adb logcat?在哪裏更容易使窗口更寬,字體更小?複製一部分日誌更容易些嗎?你在哪裏發現輸出已經消失了,因爲它超過了預設的行數? – 18446744073709551615