1

在我的 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.mknew-lib中声明模块吗?如果有,如何申报?

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

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

要不就

System.loadLibrary("newlib");?

4

1 回答 1

2

首先,您不运行android-ndk命令,而是运行ndk-build命令。

问题一:

您可以告诉您的顶层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");

无需指定路径。

于 2014-04-24T10:37:58.920 回答