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

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

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

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


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

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

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

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


这 3 个文件被编译成一个共享的 .so 库,供主 Activity 加载和运行。

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

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

如果我也可以将静态库“项目”放入其他应用程序,同时保留编辑这些库的源代码的能力(类似于 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
)

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

物理/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
)

关于java - 如何创建具有多个静态库的 JNI Android Studio 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46918887/

相关文章:

java - 在Android中调用Java RESTful webservice

android - pjsip 2.5.5 构建错误

java - 在此行 : Factory bean not Found 处找到多个注释

java - 如果文件不匹配,则递归地将一个目录复制到另一个目录

Java android 设置颜色 setFastScroll

android - 小部件问题 : BroadcastQueue: Background execution not allowed: receiving Intent

android - 如何在 Jetpack Compose Android 上的 LazyColumn 中显示动画项目 View

Android,应用程序在屏幕旋转时崩溃并打开对话框

android - 系统在android中找不到指定的路径ndk build

android - 如何突出显示复杂图像/多边形