【Android本地开发技术:编译脚本】Application.mk

作者:郭孝星

微博:郭孝星的新浪微博

邮箱:[email protected]

博客:http://blog.csdn.net/allenwells

Github:https://github.com/AllenWells

一 Application.mk文件的作用和特点

作用:描述应用程序中所需要的模块(静态库或动态库)。

位置:Application.mk通常放在PROJECT/jni/Applicatio.mk,PROJECT指的是项目路径。

二 Application.mk文件的变量

2.1 APP_PROJECT_PATH

必选变量,并且会给出应用程序工程的根目录的一个绝对路径。

2.2 APP_MODULES

可选变量,如果没有定义,这个模块名字就被定义在Android.mk文件的LOCAL_MODULE中,NDK将由Android.mk中声明的默认模块编译,并且包含所有的子文件(Makefile文件),NDK会自动计算模块依赖。如果定义了,它必须是一个空格分隔的模块列表。

2.3 APP_OPTM

可选变量,用来定义release或debug,在编译应用程序模块的时候,可以用来改变优先级。release模式是默认的,并且会生成高度优化的二进制代码。debug模式生成的是未优化的二进制代码,也可以检测很多的bug,也可以用调试。

注意:可以调试release和debug版二进制,但release版构建倾向于调试回话中提供较少信息,一些变量被优化且不能被检测,代码重新排序可能导致代码步进变得困难,堆栈跟踪可能不可靠。

2.4 APP_CFLAGS

一个C编译器开关集合,在编译任意模块的任意C或C++源代码时传递。它可以用于改变一个给定的应用程序需要依赖的模块的构建,而不是修改它自身的Android.mk文件。

2.5 APP_BUILD_SCRIPT

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

如果你想重载这个行为,你可以定义APP_BUILD_SCRIPT指向一个不同的构建脚本。一个非绝对路径将总是被解析为相对于NDK顶级目录的路径。

2.6 APP_ABI

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

举例

在ARMv7的设备上支持硬件FPU指令。可以使用APP_ABI := armeabi-v7支持IA-32指令集,可以使用APP_ABI := x86同时支持这三种,可以使用APP_ABI := armeabi armeabi-v7a x86。

2.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       hared STLport library
APP_STL := system                    default C++ runtime library

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 16:05:35

【Android本地开发技术:编译脚本】Application.mk的相关文章

【Android本地开发技术:编译脚本】Android.mk

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells 一 Android.mk文件的作用和特点 1.1 Android.mk文件作用 该文件用来描述编译系统(build system)的,即一个微型的GNU Makefile片段,会由编译系统解析一次或多次. 1.2 Android.mk文件特点 该文件用来将源文件组织成模块,模

Android ndk开发swig编译jni接口配置文件(二)

之前写过一篇Android ndk开发swig编译jni接口.看这篇看不懂,看以去看看.c++与Java有些语言结构还是有一定区别,比如c++结构体,一些函数的返回值等都是有所不同,进行swig编译要进行一些预处理,也就是配置一下就行.下面说说几种情况. 一.一般情况下string,数组,枚举类型等配置Unix.i %module Survey %include "std_string.i" %include "arrays_java.i" %include &qu

【Android应用开发技术:用户界面】9Patch图片设计

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells [Android应用开发技术:用户界面]章节列表 9Patch图片是一种特殊的PNG图片,该图片以.9.png为后缀名,它在原始图片四周各添加一个宽度为1像素的线条,这4条线决定了该图片的缩放规则和内容显示格则. 一 9Patch图片的显示规则 9Patch图片left边和t

本人讲课时录制的Android应用开发技术教学视频

网盘地址:http://yun.baidu.com/pcloud/album/info?query_uk=1963923831&album_id=3523786484935252365 本人讲课时录制的视频,采用webex录制,视频文件内容相对较小30-50兆左右,1个视频文件平均大概有1个小时左右的时间,每个例子基本上从建立项目开始边做边讲. 由于讲课范围是Android应用开发技术,视频没涉及搭建环境,基础控件的使用等基础内容. 主要内容包括: 后台服务. 服务的绑定.服务和线程.远程服务和

【Android应用开发技术:用户界面】章节列表

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells [Android应用开发技术:用户界面]章节列表 [Android应用开发技术:用户界面]用户界面基本原理 [Android应用开发技术:用户界面]设备适配 [Android应用开发技术:用户界面]用户界面布局技巧 [Android应用开发技术:用户界面]View基本原理 [

【Android应用开发技术:图像处理】Bitmap显示性能优化分析

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells [Android应用开发技术:图像处理]章节列表 Bitmap经常会消耗大量内存而导致程序崩溃,常见的异常如下所示:java.lang.OutofMemoryError:bitmap size extends VM budget,因此为了保证程序的稳定性,我们应该小心处理程序

【Android应用开发技术:用户界面】界面设计中易混淆的概念汇总

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells [Android应用开发技术:用户界面]章节列表 一 px.dp.sp px:即像素,每个px对应屏幕上的一个点. dp:即设备独立像素,一种基于屏幕密度的抽象单位,在每英寸160点的显示器上:1 dp = 1 px. sp:即比例像素,主要用来处理字体大小,可以根据用户字体

【Android应用开发技术:网络通信】网络服务可发现基本原理

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells [Android应用开发技术:网络通信]章节列表 网络服务发现(Network Service Discovery)是一种在局域网内可以辨识并使用其他设备上提供的服务的技术,这种技术在端对端应用(例如:文件共享.联机游戏)中提供很好的帮助. NSD是基于Apple的Bonjo

【Android应用开发技术:用户界面】布局管理器

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells [Android应用开发技术:用户界面]章节列表 布局管理继承于ViewGroup.它用来管理Android应用用户界面里各组件,它的使用使得Android应用的图形用户界面具有良好的平台无关性. 常见的布局方式例如以下所看到的: 线性布局 表格布局 帧布局 相对布局 网络布