I’m a little fuzzy about the use of Android.mk & Application.mk
I’ve tried reading APPLICATION-MK.HTML & ANDROID-MK.HTML in the documentation that comes with NDK, but still confused about the purpose of two makefiles.
I’ll be really grateful to anyone who could help me understand this.
Each module requires one and only one Android.mk. If all you ever have is one module in your native application, the Application.mk is redundant (however there are a few things that can only be controlled by the Application.mk if you veer from default behavior). However, if you have many modules, ergo many Android.mk files in your project, than the Application.mk can be useful for providing application-wide settings that apply to ALL modules.
Quote from docs/OVERVIEW.html
While an Android.mk file describes your modules to the build system, the
Application.mk file describes your application itself. See the
docs/APPLICATION-MK.html document to understand what this file allows you
to do. This includes, among others:
The exact list of modules required by your application.
The CPU architecture(s) to generate machine code for.
Optional information, like whether you want a release or debug
build, specific C or C++ compiler flags and others that should
apply to all modules being built.
This file is optional: by default the NDK will provide one that simply
builds all the modules listed from your Android.mk (and all the makefiles
it includes) and target the default CPU ABI (armeabi).
hope it helps