NDK开发之Application.mk文件详解
做过NDK开发的同学应该都知道有个Application.mk文件,这是android NDK构建系统使用的一个可选构建文件。它的目的是描述应用程序需要哪些模块,也定义了所有模块的一些通用变量。主要有以下几个变量。
APP_MODULES,默认情况下,ndk会构建在android.xk文件中声明的所有模块。但是这个变量可是覆盖上述行为。
假如我们的android.mk文件是这样的:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := jni1
LOCAL_SRC_FILES := jni1.c
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := jni2
LOCAL_SRC_FILES := jni2.c
include $(BUILD_SHARED_LIBRARY)
application.mk文件是这样的:
APP_MODULES := jni1
那么系统只会生成libjni1.so文件,而不会生成libjni2.so文件。如果要生成libjni2.so,那么我们可以这样:
APP_MODULES := jni1 jni2
APP_OPTIM:该变量可以被设置为release或者debug,这样可以改变生成的二进制文件的优化级别。默认情况下是release模式。此时生成的二进制文件被高度优化。如果需要调试的话我们最好还是设置为debug模式。
APP_CLAGS:该变量列出了一些编译器标志,在编译任何模块的C或者C++代码时这些标志都会被传给编译器。
APP_CPPFLAGS:该变量列出了一些编译器标志,在编译任何模块的C++代码时这些标志都会被传给编译器。
APP_ABI:默认情况下,ndk构建系统为armeabi,ABI生成二进制文件,该变量可以改变上述行为:
APP_ABI := armeabi armeabi-v7a x86
如果要为所有支持的ABI生成二进制文件:
APP_ABI := all
APP_STL:默认情况下,ndk构建系统使用最小的stl运行库,也被称为system库,该变量可以改变上述行为。
APP_GUNSTL_FORCE_CPP_FEATURES:表明所有的模块都依赖于具体的C++特性,与LOCAL_CPP_EXTENSIONS类似。
APP_SHORT_COMMANDS:该变量使得构建系统在有大量源文件的情况下可以在项目中使用更短的命令。与LOCAL_SHORT_COMMANDS类似。
版权声明:本文为博主原创文章,未经博主允许不得转载。若有错误地方,还望批评指正,不胜感激。
NDK开发之Application.mk文件详解的更多相关文章
- Android.mk文件和Application.mk文件详解
Android.mk文件和Application.mk文件详解 相同点:都是轻量级 Makefile(Makefile文件定义一些列指令,指定文件编译顺序,类似shell脚本) Application ...
- Android NDK开发之Android.mk文件
Android NDK开发指南---Android.mk文件 博客分类: Android NDK开发指南 Android.mk文件语法详述 介绍: ------------ 这篇文档是用来描述你的 ...
- Android.mk文件详解(转)
源:Android.mk文件详解 从对Makefile一无所知开始,折腾了一个多星期,终于对Android.mk有了一个全面些的了解.了解了标准的Makefile后,发现Android.mk其实是把真 ...
- Android NDK开发指南---Application.mk文件和android.mk文件
https://android.googlesource.com/platform/development/+/donut-release/ndk/docs/OVERVIEW.TXT https:// ...
- Android编译系统(Android.mk文件详解)
[Android-NDK(Native Development Kit) docs文档] NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成a ...
- 零基础学习java------39---------json格式交互,Restful(不懂),静态资源映射,SSM整合(ssm整合思想,application.xml文件详解(声明式事务管理),)
一. json格式交互(知道) 1 . 回顾ajax基本语法 $.ajax({ url:"", // 请求的后台路径 data:{"":"" ...
- iOS开发之UITextField的使用详解
UITextField的使用详解 UITextField控件是开发中,使用频率比较高的控件了,那么有必要总结一下. 一.UITextField手动编写控件 UITextField *txtAccou ...
- JAVAWEB开发之HttpServletResponse和HttpServletRequest详解(上)(各种乱码、验证码、重定向和转发)
HttpServletResponse简介 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象 request和re ...
- JAVAWEB开发之HttpServletResponse和HttpServletRequest详解(下)(各种乱码、验证码、重定向和转发)
HttpServletRequest获取请求头信息 (1)获取客户机请求头 String getHeader(String name) Enumeration<String> getHe ...
随机推荐
- POJ 2992 Divisors
每个数都可以分解成素数的乘积: 写成指数形式:n=p1^e1*p2^e2*...*pn^en:(p都是素数) 那么n的因数的数量m=(e1+1)*(e2+1)*...*(en+1): 所以用筛选法筛出 ...
- 为什么 API 监控对于任何业务来说都重要?
对于商务运算来说一个比较稳定的趋势在于对 API 日渐增长的依赖性,几乎每一个代码级交互过程都会调用 API 来收集数据或触发某些关键过程.没有 API ,你将无法与同伴进行文件交流,没有 API , ...
- wcf中netTcpBinding的元素构成
<security> of <netTcpBinding> <transport> of <netTcpBinding> <message> ...
- bzoj2426
稍微列个式子就知道是贪心 ..] of longint; m,b,h0,n,i,p,j,x,ans,s:longint; procedure swap(var a,b:longint); var c: ...
- POJ_3046_Ant_Counting_(动态规划,多重集组合数)
描述 http://poj.org/problem?id=3046 n种蚂蚁,第i种有ai个,不同种类的蚂蚁可以相互区分,但同一种类的蚂蚁不能相互区分,从这些蚂蚁中取出s,s+1,s+2,...,b- ...
- HDOJ/HDU 1015 Safecracker(枚举、暴力)
Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Kle ...
- HDOJ/HDU 1982 Kaitou Kid - The Phantom Thief (1)(字符串处理)
Problem Description Do you know Kaitou Kid? In the legend, Kaitou Kid is a master of disguise, and c ...
- bzoj 3531 [Sdoi2014]旅行(树链剖分,线段树)
3531: [Sdoi2014]旅行 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 876 Solved: 446[Submit][Status][ ...
- [LeetCode] 3. Longest Substring Without Repeating Characters 解题思路
Given a string, find the length of the longest substring without repeating characters. For example, ...
- 各种jee服务器的比较,tomcat, jboss, glassfish, websphere, weblogic
tomcat, 开源,只是一个 servlet jsp 容器. jboss, 开源,是一个j2ee 应用服务器,容器支持 servlet, jsp, ejb,jms等. 稳定且实现了全部j2ee ap ...