2012-03-28 122 views

回答

3

有編寫含有C Android應用程序有兩種方式:

  1. 你用Java編寫一個Android應用程序和執行C.它的某些部分,那麼你打電話的那部分與JNI。

  2. 你寫的(使用NativeActivity)在C/C++的Android應用程序,但作爲第一個答案here提到你仍然會在引擎蓋下調用Java中的東西。

據我所知,這是唯一標準的兩種方式來有一個「應用程序」,即正常用戶可以玩的東西。

當然,您可以使用一些工具鏈(例如NDK工具鏈或CodeSourcery工具鏈等)編譯二進制文件,但是您只能從某些命令行終端或某些其他應用程序運行它們:這些是在設備上運行的二進制代碼,而不是完整的應用程序。對於某些東西,比如服務或驅動程序,這非常好。對於靜態和動態:

(a)對於NDK的情況,您通常會動態鏈接到Android的基本庫(仿生)或您設備可能在/ system/lib中的任何其他庫。這意味着你的程序很小。 (b)對於其他必須靜態編譯它自己的libc(或其他)的工具鏈,你會得到一個胖二進制文件,它可能會加載甚至執行得更慢(但這取決於太多因素,你應該測試它)。

編輯:那麼,到底,這取決於你從你的應用程序想要的東西:

  • 如果你想開發標準的Android「應用程序」,可以使用GUI,在WiFi /藍牙,根據您的偏好語言,使用Java或C/C++方式。 Java更受歡迎,所以你會發現更多的文檔和例子。

  • 如果您想在C/C++中開發一些不需要Android應用程序(例如服務或與硬件接口的代碼片段)功能的東西,或者希望移植一些現有的C/C++代碼,那麼你可以用ARM工具鏈編譯它。一般來說,靜態鏈接和動態鏈接之間的區別,請參閱此question

+0

什麼是以上兩種方式的優點和缺點? – Nimit 2012-03-29 06:37:34

+0

編輯了答案,以更好地描述方法的一些特點 - 但是,這一切都取決於你真正想從你的程序中得到什麼,如果你想做一些特定的事情,或許可以說更多關於可能的優點/缺點 – gfour 2012-03-29 08:08:46

+0

正確。謝謝 :-) – Nimit 2012-03-29 12:25:11

相關問題