【问题标题】:How to create an JNI Android Studio Project with multiple static libs如何创建具有多个静态库的 JNI Android Studio 项目
【发布时间】:2018-04-05 17:52:12
【问题描述】:

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

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


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

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

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

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


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

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

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

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

这可能吗?

非常感谢,

史蒂夫。

【问题讨论】:

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


    【解决方案1】:

    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 )
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 2021-02-17
      相关资源
      最近更新 更多