我想为android ndk创建一个c ++项目。我希望每个项目都像动态库一样使用它。我不想每次都更改/传输源代码。我导入* .so文件并包含它并使用它上课或其他什么。 这是可能的。如果可能的话,如何导入和使用它。
或者我创建java项目,我使用它来使用jni与c ++项目进行通信,然后我编译它。之后我有一个* .jar文件,我使用它而不是android ndk。
哪一种可能或有效。
答案 0 :(得分: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" );