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

How to create an JNI Android Studio Project with multiple static libs

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

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


一个Java主activity(单个,非常基本的.java文件)

c++应用程序代码(游戏代码)

c++ 物理代码(编译并 linked 作为静态库)

c++ 图形代码(编译并 linked 作为静态库)


这3个文件编译成一个共享的.so lib,被mainactivity加载和运行。

这如何转化为 gradle 构建文件和 cmakelists?

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

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

这可能吗?

非常感谢,

史蒂夫

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
)

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

physics/CMakeLists.txt

add_library( physics STATIC
         src1.cpp src2.cpp )

graphics/CMakeLists.txt

add_library( graphics STATIC
         src1.cpp src2.cpp )

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
)