【问题标题】:Android NDK: build after added a new library module directly under jni/ folderAndroid NDK:直接在 jni/ 文件夹下添加新库模块后构建
【发布时间】:2014-04-24 09:58:39
【问题描述】:

在我的 Android NDK 项目中,我曾经只有 一个 库模块:

jni/    
  Android.mk
  ...            (more source files)

然后,我需要添加另一个与现有库模块无关的新库模块。我的意思是他们是独立的。我直接在jni/文件夹下添加了新库。

jni/    
  Android.mk
  ...            (more source files)

  new-lib/
     Android.mk
      ...            (more source files)

问题 1:
我在我的 Android 项目下运行 ndk-build 命令来构建。但是 new-lib 根本没有构建。那是因为我需要在 jni/ 文件夹下的 Android.mk 中声明new-lib 模块吗?如果有,如何申报?

问题2:当我加载new-lib时(假设模块名为“newlib”),我应该使用

System.loadLibrary("new-lib/newlib");

或者只是

System.loadLibrary("newlib"); ?

【问题讨论】:

    标签: android c++ android-ndk makefile multiple-makefiles


    【解决方案1】:

    首先,你不运行android-ndk 命令,你运行ndk-build 命令。

    问题 1:

    您可以告诉您的顶级 Android.mk 即 $PROJECT/jni/Android.mk 包括另一个位于不同位置/子目录的 Android.mk

    如果您在子目录中定义了任何Android.mk 文件,则必须将它们显式包含在顶级Android.mk 中。有一个帮助函数

    include $(call all-subdir-makefiles)
    

    只需将其添加到您的顶级 Android.mk 文件中即可。这将包括当前文件路径的子目录中的所有Android.mk 文件。

    问题 2:

    use System.loadLibrary("newlib");
    

    无需指定路径。

    【讨论】:

    • 嗨,我尝试了 include $(call all-subdir-makefiles) ,我的 new-lib 还没有构建。我正在使用 ndk-build 命令
    • 请编辑问题并从父文件夹和子文件夹中添加 Android.mk 的源代码。
    猜你喜欢
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多