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. 【转】IDA远程调试 The debugger could not attach to the selected process. irs_recv 等待的操作过时

    IDA连接android_server 选中进程点ok之后 连接不上报错 The debugger could not attach to the selected process. This can ...

  2. Linux环境下安装MySQL(解压方式)

    1.将安装包放在服务器上:mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz 2.将安装包解压:tar -zxvf mysql-5.6.37-linux-glibc2 ...

  3. 04-树4 是否同一棵二叉搜索树(25 point(s)) 【Tree】

    04-树4 是否同一棵二叉搜索树(25 point(s)) 给定一个插入序列就可以唯一确定一棵二叉搜索树.然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到.例如分别按照序列{2, 1, 3}和 ...

  4. linux内核段属性机制【转】

    本文转载自:https://github.com/TongxinV/oneBook/issues/9 linux内核段属性机制 以subsys_initcall和module_init为例 subsy ...

  5. Codeforces Round #369 (Div. 2) D. Directed Roads —— DFS找环 + 快速幂

    题目链接:http://codeforces.com/problemset/problem/711/D D. Directed Roads time limit per test 2 seconds ...

  6. hadoop 添加,删除节点

    http://www.cnblogs.com/tommyli/p/3418273.html

  7. Idea中的插件-列出Java Bean的所有set方法

    插件的git 地址: https://github.com/yoke233/genSets 将插件jar导入idea中,使用方式是对象后加.allset,然后回车.

  8. 002-Fatal error in launcher: Unable to create process using '""

    这个问题出在先安装Python3之后再安装python2, 使用pip安装的时候出现的故障 原因是python3的环境变量写入在了用户的环境变量上 但是一旦安装python2之后, Python会把信 ...

  9. vuex本地存储

    vuex与localstorage 区别:vuex数据存储的内存,localstorage的数据存储在本地 应用场景:vuex用于组件之间的传值,localstorage用于不同页面之间的传值 永久性 ...

  10. Redis的小白应用

    在window下测试学习redis 步骤: 1.先下载安装 redis,(conf文件制定配置文件(redis-server.exe  redis.conf ),若不指定则默认), 基本上我是直接点击 ...