Application.mk 这个文件是被Android ndk编译系统使用的, 和android.mk文件一样也是被放在jni目录下, Applicaiton.mk也是一个GNU makefile, 他描述的对象是当前应用程序定义的所有模块, 在里面也可以定义变量,定义的变量可以被所有模块使用。
以下是Application.mk编译文件支持的一些内置变量:
- APP_MODULES: 默认Android ndk编译系。统会编译所有在Android.mk文件里面定义的模块, 这个变量可以覆盖这个行为,提供一个需要编译的用空格隔开的模块列表
- APP_OPTIM:这个变量可以用来改变产生的二进制优化等级, 设置release或者debug的优化, 默认这里是release 模式, 这个变量可以设置debug模式去产生未优化的二进制代码以方便调试
- APP_CPPFLAGS:这个变量列表定义要传递到所有模块的c++源文件中的标志。
- APP_CLAGS:这个变量列表定义要传递到所有模块的c或者c++源文件中的标准
- APP_BUILD_SCRIPT:默认android ndk编译系统会在工程的jni子目录下查找 Android.mk文件, 使用这个变量可以改变这种方式, 这样就可以使用其他的编译文件了
- APP_ABI:默认android ndk编译系统产生的二进制接口是armeabi ABI, 这个变量可以产生其他的不同的二进制接口的输出文件;
比如:
APP_ABI := mips
当然可以设置更多的ABI(应用二进制接口)
APP_ABI := armeabi mips
如果想生成所有支持的ABIs:
APP_ABI := all
- APP_STL: 默认Android ndk编译系统使用 最低的STL运行库,也被称为系统库, 这个变量用来选择不同的STL 实现。
例如:APP_STL:= stlport_shared
- APP_GNUSTL_FORCE_CPP_FEATURES: 和LOCAL_CPP_EXTENSIONS 变量类似, 这个变量指示所有模块依赖具体的c++功能,比如RTTI, 异常等。
- APP_SHORT_COMMANDS:和LOCAL_SHORT_COMMANDS变量类似, 这个变量让编译系统在高的源文件中用更短的命令。