android开发之Application.mk

Application.mk的作用:

Application.mk描述了应用程序需要哪些动态库和静态库。

 存放位置:

文件通常放在项目目录的jni文件夹下。

 变量定义:

由于Application.mk说到底只是作为GNU makefile的一个片段,其中也需要定义一些变量。

 -APP_PROJECT_PATH

此变量应该被赋予项目的根目录地址,此项为可选项。是用来拷贝或安装已脱离版本的jni共享库到一个apk产生工具已知的具体位置

-APP_MODULES

 此项为可选项,当没有此选项时,NDK会自动编译android.mk文件中定义的所有模块及其包含的子模块(通过默认_all_编译android.mk中的所有,并且可以包含任意子makefile文件)。

 当有此选项时,必须是一个模块的列表,各个模块之间以空格为分隔符分开或者是向android.mk中罗列开来,就像是android.mk文件中的LOCAL_MODULE定义中的一样。

 -APP_OPTIM  www.2cto.com

此选项可以被定义为 release 或 debug。这个选项用于变更编译程序模块时的优化级别。

默认的选项是release,此选项下会得到较高级别的优化(将产生高度地优化二进制代码)。debug下为了便于调试不会进行过多优化。

可以在manifest文件中<application>tag内设置android:debuggable为ture来改变默认值为debug

其实无论debug还是release都是允许用户进行调试的,只是debug模式下会提供更多的信息。 一些变量是被优化掉了不能被视察了,代码再排序让单步调试困难,堆栈跟踪不可信赖,等等。

-APP_CFLAGS

一组 C 编译器的标志在编译任意模块的任何 C 或 C++ 源代码时被传递。 这可以是应用程序视情况而定来改变特定模块的生成。
重要警告:
      +++++++++++++++++++++++++++++++++++++++++++++++++++
      +
      + All paths in these flags should be relative to the top-level NDK
      + directory. For example, if you have the following setup:
      + 在这些标志中的全部路径将是相对于顶级 NDK 目录。例如,如果你有如下结构: 
      +
      +      sources/foo/Android.mk
      +      sources/bar/Android.mk
      +
      +   To specify in foo/Android.mk that you want to add the path to the
      + 'bar' sources during compilation, you should use:
      + 在 foo/Android.mk 文件中具体指定你想要在编译时期添加 bar 源文件路径,你将使用:
      +
      +    APP_CFLAGS += -Isources/bar
      +
      + Or alternatively: 
      + 或者:
      +
      +    APP_CFLAGS += -I$(LOCAL_PATH)/../bar
      +
      + Using '-I../bar' will *NOT* work since it will be equivalent to
      + '-I$NDK_ROOT/../bar' instead.
      + 使用 -I../bar 将没有效,因为它将相当于 -I$NDK_ROOT/../bar 。
      +
      +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
注意:在 android-ndk-1.5_r1 中,这仅适用于 C 源文件,而没有 C++ 编译标志一个。
         这已经改正彻底地匹配 Android 生成系统。
-APP_CXXFLAGS
一个 APP_CPPFLAGS 的别名,在未来 NDK 的发行版中考虑到过时的原因,它可能会消失。
-APP_CPPFLAGS
一组 C++ 编译器的标志仅在生成 C++ 源文件时被传递。
注意:在 android-ndk-1.5_r1 中,这适用于 C 和 C++ 两者的源文件。
         这已经改正彻底地匹配 Android 生成系统。
         你可以现在使用 APP_CFLAGS 变量,将适用于 C 和 C++ 源文件。

 -APP_BUILD_SCRIPT默认条件下,NDK编译系统会到工程目录的jni文件夹下查找android.mk文件。如果你想覆盖这个行为的话就可以定义此变量。如果你给定的是一个非绝对路径的话,那么这个路径总是被认为是相对于NDK顶层目录的路径。

-APP_ABI默认条件是armeabi(ndk生成系统将产生适用于armeabi ABI机器码,这符合一个基于ARMv5TE的CPU对应软件浮点操作),用户可以通过此选项进行修改(来选择一个不同的ABI),例如:为了在ARMv7上支持硬件FPU指令可以修改如下:APP_ABI := armeabi-v7a(对于支持硬件 FPU 指令在基于 ARMv7 的设备上)或者支持ARMv5TE 又支持ARMv7的设备APP_ABI := armeabi armeabi-v7a

-APP_STL默认条件下,NDK编译系统会使用android系统提供的轻量级C++运行时库/system/lib/libstdc++.so提供头文件。NDK本身为用户提供了可选择的C++库,用户可以使用或是链接到自己的应用。例如: 

APP_STL := stlport_static    --> static STLport library

APP_STL := stlport_shared    --> shared STLport library

APP_STL := system            --> default C++ runtime library


举例:

  1. #1.指定application里要链接的标准c++库  
  2. APP_STL := gnustl_static  
  3. #2.编译选项  
  4. APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值