如何创建具有多个静态库的JNI Android Studio项目

Ste*_*rty 1 java java-native-interface android native android-ndk

我正在将我们的游戏从使用ndk-build转换为使用Android Studio和CMake。

该应用程序是采用以下形式的JNI应用程序:


Java主要活动(单个非常基本的.java文件)

C ++应用程式码(游戏程式码)

C ++物理代码(要编译并链接为静态库)

C ++图形代码(要编译并链接为静态库)


这3个文件被编译到一个共享的.so lib中,以由main活动加载和运行。

如何将其转换为gradle构建文件和cmakelist?

我看过很多示例,它们只是链接到外部静态库中,没有用。我也需要编译它们,并且希望它们显示在项目视图中,以便我可以编辑源代码。

如果我也可以将静态库的“项目”也放到其他应用程序中,同时保留编辑这些库的源代码的能力(类似于Visual Studio项目文件),那也很好。

这可能吗?

非常感谢,

史蒂夫。

Ale*_*ohn 5

CMakeLists.txt

add_library( physics STATIC
         physics/src1.cpp physics/src2.cpp )
add_library( graphics STATIC
         graphics/src1.cpp graphics/src2.cpp )
add_library( game SHARED
         game/src1.cpp game/src2.cpp )
target_link_libraries( game
         physics graphics
         log
)
Run Code Online (Sandbox Code Playgroud)

或者,您可以将其拆分为多个文件:

物理/CMakeLists.txt

add_library( physics STATIC
         src1.cpp src2.cpp )
Run Code Online (Sandbox Code Playgroud)

graphics / CMakeLists.txt

add_library( graphics STATIC
         src1.cpp src2.cpp )
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt

add_subdirectory( physics )
add_subdirectory( graphics )
add_library( game SHARED
         game/src1.cpp game/src2.cpp )
target_link_libraries( game
         physics graphics
         log
)
Run Code Online (Sandbox Code Playgroud)