2013-02-01 64 views
1

我是JNI,C++和make文件的新手。在我的示例Android-JNI-C++項目的Application.mk中,它們是APP_MODULES屬性。什麼是Android JNI App上下文中的模塊?

Android NDK documentation只是說

APP_MODULES

這個變量是可選的。如果沒有定義,NDK將默認構建 全部由您的Android.mk聲明的模塊,以及 可能包含的任何子生成文件。

如果定義了APP_MODULES,則它必須是空格分隔的模塊名稱列表 ,因爲它們出現在Android.mk 文件的LOCAL_MODULE定義中。請注意,NDK將自動計算模塊相關性 。

而我從other questions on StackOverflow知道,每個模塊都需要它自己的Android.mk

但是在這種情況下什麼是模塊?有幾個模塊而不是隻有一個模塊的優點是什麼?

+0

它與具有不同的積木相同。您可以對模塊進行條件編譯以及在模塊中進行條件編譯,在進行小的更改時可以縮短編譯時間。 – auselen

回答

1

您可以在單個Android.mk中定義多個模塊。每個庫(靜態或共享) - 您構建或複製(稱爲預構建庫)是一個獨立的模塊。

將代碼拆分到Android上單獨庫中的主要原因與所有其他平臺上的代碼相同:divide et impera。在NDK構建方案中,還有一種情況:爲每個模塊指定編譯參數要容易得多,因此如果需要mix -std=c99 and -std=c++0x,簡單的解決方法是使用兩個靜態庫。