如何使用多个静态库创建JNI Android Studio项目

时间:2017-10-24 19:48:26

标签: java android android-ndk java-native-interface native

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

该应用是一个JNI应用,采用以下形式:

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

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

c ++物理代码(作为静态库编译和链接)

c ++图形代码(作为静态库编译和链接)

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

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

我见过很多只链接在外部静态库中的例子,没用。我也需要编译它们,我希望它们能够在项目视图中显示,我可以编辑源代码。

如果我可以将静态lib'项目'放入其他应用程序中,同时保留编辑这些库的源代码的能力(类似于可视工作室项目文件。

这可能吗?

非常感谢,

史蒂夫。

1 个答案:

答案 0 :(得分:4)

<强>的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
)

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

<强>物理/的CMakeLists.txt

add_library( physics STATIC
         src1.cpp src2.cpp )

<强>图形/的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
)