Java 如何创建具有多个静态lib的jniandroidstudio项目

Java 如何创建具有多个静态lib的jniandroidstudio项目,java,android,android-ndk,java-native-interface,native,Java,Android,Android Ndk,Java Native Interface,Native,我正在将我们的游戏从使用ndk构建转换为使用Android Studio和CMake 该应用程序是采用以下形式的JNI应用程序: Java主活动(单个非常基本的.Java文件) c++应用程序代码(游戏代码) c++物理代码(作为静态库编译和链接) c++图形代码(作为静态库编译和链接) 这3个文件被编译成一个共享的.so库,由主活动加载和运行 这如何转化为gradle构建文件和CmakeList 我见过很多只链接到外部静态libs的例子,这是没有用的。我也需要编译它们,我希望它们显示在项目

我正在将我们的游戏从使用ndk构建转换为使用Android Studio和CMake

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


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

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

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

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


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

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

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

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

这可能吗

非常感谢,


史蒂夫。

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
)
add_library( physics STATIC
         src1.cpp src2.cpp )
add_library( graphics STATIC
         src1.cpp src2.cpp )
add_subdirectory( physics )
add_subdirectory( graphics )
add_library( game SHARED
         game/src1.cpp game/src2.cpp )
target_link_libraries( game
         physics graphics
         log
)
也可以将其拆分为多个文件:

物理学/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
)
add_library( physics STATIC
         src1.cpp src2.cpp )
add_library( graphics STATIC
         src1.cpp src2.cpp )
add_subdirectory( physics )
add_subdirectory( graphics )
add_library( game SHARED
         game/src1.cpp game/src2.cpp )
target_link_libraries( game
         physics graphics
         log
)
graphics/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
)
add_library( physics STATIC
         src1.cpp src2.cpp )
add_library( graphics STATIC
         src1.cpp src2.cpp )
add_subdirectory( physics )
add_subdirectory( graphics )
add_library( game SHARED
         game/src1.cpp game/src2.cpp )
target_link_libraries( game
         physics graphics
         log
)

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
)
add_library( physics STATIC
         src1.cpp src2.cpp )
add_library( graphics STATIC
         src1.cpp src2.cpp )
add_subdirectory( physics )
add_subdirectory( graphics )
add_library( game SHARED
         game/src1.cpp game/src2.cpp )
target_link_libraries( game
         physics graphics
         log
)