当前位置:首页 > 编程开发

Android NDK开发指南(一) Application.mk文件

webgou12年前 (2014-05-23)编程开发154

 

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

扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=579

分享给朋友:

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

ARM1136JF-S 处理器

ARM1136JF-S 处理器…

vi显示行数命令

vi中显示行数命令::set number跳转到指定行:xx …

Java基础 三步学会Java Socket编程(二)

http://java.ccidnet.com/art/3539/20070606/1103869_1.html第二步 多个客户同时连接在实际的网络环境里,同一时间只对一个用户服务是不可行的。一个优秀的网络服务程序除了能处理用户的输入信息,还必须能够同时响应多个客户端的连接请求。在java中,实现以…

总线标准

微机中总线一般分为内部总线,系统总线,外部总线.内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片的一级互联;而系统总线是各个插板与系统板之间的总线,用于插件板的一级互连;外部总线是微机和外部之间的总线,微机做为一种设备通过该总线和其它设备进行信息和数据交换,它用于设备一级的互连.从广义上说,…

使用Nginx实现根据 IP 匹配指定 URL

 最近的一个项目,需要特定的IP访问某专题页面的时候跳转到网站首页,思考了下,直接使用NGINX实现,分享给大家。业务需求...…

UTF-8 and Unicode FAQ

 2000年2月这篇文章说明了在 POSIX 系统 (Linux,Unix) 上使用 Unicode/UTF-8 所需要的信息. 在将来不远的几年里, Unicode 已经很接近于取代 ASCII 与 Latin-1 编码的位置了. 它不仅允许你处理处理事实上存在于地球上的任何语言文…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。