更新时间:2023-02-06 18:02:03
<project>/
|
+-- jni/
| |
| +-- Android.mk
| +-- [Application.mk] (optionally)
| +-- main.c
|
+-- AndroidManifest.xml
根据此处的简短指南: https://developer.android.com/ndk/guides/concepts
According to a short guide from here: https://developer.android.com/ndk/guides/concepts
$ cd <path>/<to>/<project>
$ <ndk>/ndk-build
但是,有一种方法可以使用带有参数的ndk-build
来定义自定义NDK项目结构.
However, there is a way to define custom NDK project structures using ndk-build
with arguments.
<mylib>/
|
+-- Android.mk
+-- [Application.mk]
+-- main.c
$ cd <mylib>
$ ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk
当Android.mk无论如何都包含所有模块的定义时,为什么需要多个makefile-也可以将它们放置在Application.mk中.
why there is a need for multiple makefiles when Android.mk will contain the definitions for all modules anyway-that could just as well be placed in Application.mk.
Android.mk
是必需的,而Application.mk
不是必需的.Android.mk
包含模块定义,并且Application.mk
描述体系结构,编译器选项和其他全局"选项.Android.mk
与Application.mk
正交.如果Android.mk
包含3个模块,并且Application.mk
2个ABI(例如arm和x86),则NDK将构建(3 * 2)个工件.Application.mk
中的变量出现在Android.mk
中,因此,例如,您可以使用Android.mk
中的APP_ABI
链接与体系结构相关的库.Application.mk
中是一种干净的方法.Application.mk
仍然只是设计决定,本来可以完成的.Android.mk
is mandatory and Application.mk
is not.Android.mk
contains module definitions and Application.mk
describes architecture, compiler options, and other "global" options.Android.mk
is orthogonal to Application.mk
by design. If Android.mk
contains 3 modules, and Application.mk
2 ABIs (e.g. arm and x86), then NDK will build (3 * 2) artifacts.Application.mk
appears in Android.mk
, so you can use, for instance, APP_ABI
in Android.mk
to link architecture dependent libraries.Application.mk
is a clean way.Application.mk
is just a design decision, it could've been done differently.