http://www.cnblogs.com/yaozhongxiao/archive/2012/03/06/2381586.html

Application.mk目的是描述在你的应用程序中所需要的模块(即静态库或动态库)。

Application.mk文件通常被放置在 $PROJECT/jni/Application.mk下,$PROJECT指的是您的项目。

简介:

-----------------------------
要将C\C++代码编译为SO文件,光有Android.mk文件还不行,还需要一个Application.mk文件。

本文档是描述你的Android应用程序中需要的本地模块的Application.mk的语法使用。

1.  APP_PROJECT_PATH 
: 这个变量是强制性的,并且会给出应用程序工程的根目录的一个绝对路径。

这是用来复制或者安装一个没有任何版本限制的JNI库,从而给APK生成工具一个详细的路径。

这个变量是可选的,如果没有定义,这个模块名字被定义在Android.mk文件中的 LOCAL_MODULE 中。

NDK将由在Android.mk中声明的默认的模块编译,并且包含所有的子文件(makefile文),
NDK会自动计算模块的依赖。

如果APP_MODULES定义了,它

(

 3. 这个变量是可选的,用来定义“release”或"debug"。在编译您的应用程序模块的时候,可以用来改变优先级。

                                “release”模式是默认的,并且会生成高度优化的二进制代码。

"debug"模式生成的是未优化的二进制代码,但可以检测出很多的BUG,可以用于调试。

注意:如果你的应用程序是可调试的(即,如果你的清单文件在它的<application>标签中把android:debuggable属性设为true),

默认将是debug而非release。把APP_OPTIM设置为release可以覆写它。

代码重新排序可能致使代码步进变得困难,堆栈跟踪可能不可靠,等等。

4. APP_CFLAGS : 一个C编译器开关集合,在编译任意模块的任意C或C++源代码时传递。

它可以用于改变一个给定的应用程序需要依赖的模块的构建,而不是修改它自身的Android.mk文件

5. APP_BUILD_SCRIPT : 默认,NDK构建系统将在 $(APP_PROJECT_PATH)/jni 下寻找一个名为 Android.mk 的文件。即,对于这个文件

$(APP_PROJECT_PATH)/jni/Android.mk

如果你想重载这个行为,你可以定义APP_BUILD_SCRIPT指向一个不同的构建脚本。

一个非绝对路径将总是被解析为相对于NDK顶级目录的路径。

6. APP_ABI : 默认情况下,NDK的编译系统根据 "armeabi" ABI生成机器代码。可以使用APP_ABI 来选择一个不同的ABI。

比如:为了在ARMv7的设备上支持硬件FPU指令。可以使用  APP_ABI := armeabi-v7a

或者为了支持IA-32指令集,可以使用      APP_ABI := x86

或者为了同时支持这三种,可以使用       APP_ABI := armeabi armeabi-v7a x86

7. APP_STL :默认,NDK构建系统提供由Android系统给出的最小C++运行时库(/system/lib/libstdc++.so)的C++头文件。

                         然而,NDK带有另一个C++实现,你可以在你自己的应用程序中使用或链接它。

定义APP_STL以选择它们其中的一个:  APP_STL := stlport_static       -->     static STLport library

                                                                                           APP_STL := stlport_shared    -->     shared STLport library

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

参考:   http://hualang.iteye.com/blog/1149359

Android NDK开发指南(一) Application.mk文件的更多相关文章

  1. Android NDK开发指南---Application.mk文件和android.mk文件

    https://android.googlesource.com/platform/development/+/donut-release/ndk/docs/OVERVIEW.TXT https:// ...

  2. Android NDK开发指南(二)Android.mk文件

    http://www.cnblogs.com/yaozhongxiao/archive/2012/03/06/2382225.html 1.  概述 Android.mk文件是用来描述build sy ...

  3. NDK开发之Application.mk文件详解

    做过NDK开发的同学应该都知道有个Application.mk文件,这是android NDK构建系统使用的一个可选构建文件.它的目的是描述应用程序需要哪些模块,也定义了所有模块的一些通用变量.主要有 ...

  4. Android NDK开发及调用标准linux动态库.so文件

    源:Android NDK开发及调用标准linux动态库.so文件 预备知识及环境搭建 1.NDK(native development Kit)原生开发工具包,用来快速开发C.C++动态库,并能自动 ...

  5. Android.mk文件和Application.mk文件详解

    Android.mk文件和Application.mk文件详解 相同点:都是轻量级 Makefile(Makefile文件定义一些列指令,指定文件编译顺序,类似shell脚本) Application ...

  6. 关于jni编译32位、64位动态库(Android.mk和Application.mk文件)

    最近新项目需要编译64位的动态库,这里记录如何配置. 在jni目录下加入Android.mk和Application.mk文件. Application.mk APP_ABI := armeabi a ...

  7. Android NDK开发

    Android NDK 开发教程(极客学院) 一.Android NDK环境搭建 使用最新ndk,直接抛弃cygwin,以前做Android的项目要用到NDK就必须要下载NDK,下载安装Cygwin( ...

  8. Android NDK开发入门实例

    AndroidNDK是能使Android应用开发者把从c/c++编译而来的本地代码嵌入到应用包中的一系列工具的组合. 注意: AndroidNDK只能用于Android1.5及以上版本中. I. An ...

  9. Android NDK 开发(四)java传递数据到C【转】

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/41845701 前面几篇文章介绍了Android NDK开发的简单概念.常见错误及处 ...

随机推荐

  1. yuicompressor

      yui/yuicompressor: YUI Compressor https://github.com/yui/yuicompressor    YUI Compressor 详细介绍 YUI ...

  2. if UDP is permitted

    Networking Basics (The Java™ Tutorials > Custom Networking > Overview of Networking) https://d ...

  3. JS中正则匹配开头不带空格,结尾也不带空格的字符串

    在做项目的时候,要求限制SSID的长度.以及开头和结尾不能是空格. var reg = /^\S.{0,30}\S$/ "$$$  $$".match(reg);   ==> ...

  4. Android在有存储卡和无存储卡情况下拍照后固定尺寸和压缩大小

    我最近工作挺忙,距离上一次写博客转眼已经过了一个多月,每次学到和用到点新东西,其实都有分享的欲望,但奈何文笔太差,而一篇文章包括构思,排版,修改发布的时间最少要花费2个小时(这其中还不包括写完后未保存 ...

  5. 如何修改sublime3注释的颜色

    在用sublime text3编写Python2代码时总觉得注释颜色太浅了, 看起来吃力,于是就尝试去修改,和sublime text2不同, sublime text3的主题配置文件在Sublime ...

  6. linux3 源代码安装

    源代码安装: 通过yum就不会有依赖关系(安装mysql是安装mysqlServer).Rpm更新的时候,如果没有安装软件就回去安装. 应用程序和系统命令会放在不同的目录中(bin,sbin,usr/ ...

  7. 【bzoj2588】Count on a tree 主席树

    这题给人开了个新思路. 原本构造一个序列的主席树,是这个位置用上个位置的信息来省空间,树上的主席树是继承父亲的信息来省空间. 此题若带修改怎么办? 若对某个点的权值做修改,则这个点的子树都会受影响,想 ...

  8. javascrip中ajax

    移动端对加载速度要求比较高,由于jquery插件有270多k,无形中增加加载的速度,下面整理一下原生js中ajax: 先了解ajax的基础知识 (1)XMLHttpRequest 对象 XMLHttp ...

  9. hihocoder#1050 : 树中的最长路(树中最长路算法 两次BFS找根节点求最长+BFS标记路径长度+bfs不容易超时,用dfs做TLE了)

    #1050 : 树中的最长路 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中, ...

  10. FFmpeg big changes. ffmpeg 接口的一些改变

    Big changes have been made from FFmpeg 0.5.1… Refer to http://cekirdek.pardus.org.tr/~ismail/ffmpeg- ...