2014-01-07 43 views
2

我想爲android ndk創建一個C++項目,並且我希望每個項目都像動態庫一樣使用它。我不想每次都改變/傳輸源代碼。我導入* .so文件幷包括它並使用它的類或其他。 這是可能的。如果有可能如何導入和使用它。android ndk溝通不同的C++項目

或者我創建java項目,我用它來使用jni與我交流c + +項目,我編譯它。之後,我有一個* .jar文件,我用它來代替android ndk。

其中哪一個可能或有效。

回答

1

我不能完全肯定,如果我理解正確的問題,但我相信你更喜歡使用完全/主要是C++編寫的Android應用程序,並有要一個核心庫/模塊重複使用,每連續項目不包括每個連續項目中的庫SOURCE文件。

通過將所需的庫添加到makefile中,可以省略包含源文件並將最終構建的.so文件包含在新項目中。像這樣:

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 
LOCAL_C_INCLUDES := (includes for libraryname) 
LOCAL_MODULE := libraryname 
LOCAL_SRC_FILES := libraryname.so 
include $(PREBUILT_SHARED_LIBRARY) 

include $(CLEAR_VARS) 

--- instructions for custom application code here --- 

LOCAL_SHARED_LIBRARIES := libraryname 

其中「libraryname」是庫模塊的名稱,「libraryname.so」是庫文件的名稱。請注意路徑應該與make文件相關。在第二個「include $(CLEAR_VARS)」之下並且在最終的「LOCAL_SHARED_LIBRARIES」之上,添加用於構建使用共享庫的應用程序的源代碼的指令。

不要忘了加載所有庫,以便在Java端,即:

System.loadLibrary("libraryname"); 
System.loadLibrary("customlib");