Android.mk语法解析
Android.mk 相当于 Linux 中的 Makefile 文件,用来向安卓系统描述如何编译源代码。该文件会被编译器解析多次,所以尽量减少在 Android.mk 中声明变量。
Android.mk 文件可以将源码打包成模块,模块可以是apk、jar包、c/c++应用程序、静态库(.a文件)和动态库(.so)。
动态库可以被移到应用程序包(apk),静态库可以被链接入动态库。
Android.mk 中可以定义一个或者多个模块,一个源文件也可以打包进多个模块。
# Copyright The Android Open Source Project LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS) LOCAL_SRC_FILES:= \
rild.c LOCAL_SHARED_LIBRARIES := \
liblog \
libcutils \
libril \
libdl # temporary hack for broken vendor rils
LOCAL_WHOLE_STATIC_LIBRARIES := \
librilutils_static LOCAL_CFLAGS := -DRIL_SHLIB ifeq ($(SIM_COUNT), )
LOCAL_CFLAGS += -DANDROID_SIM_COUNT_2
endif LOCAL_MODULE:= rild
LOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE)
在 Android.mk 中,注释以 # 开头,注释此行。
LOCAL_PATH:= $(call my-dir)
指定当前模块的目录。
include $(CLEAR_VARS)
清除 LOCAL_PATH 以外的所有 LOCAL_xxx 变量。
LOCAL_SRC_FILES:= \
rild.c
需要编译的源代码文件。
LOCAL_SHARED_LIBRARIES := \
liblog \
libcutils \
libril \
libdl
模块运行时需要依赖的动态库。
LOCAL_WHOLE_STATIC_LIBRARIES := \
librilutils_static
静态库全链接。
LOCAL_CFLAGS := -DRIL_SHLIB
可选的,用来在编译c/c++时附加编译选项。
ifeq ($(SIM_COUNT), 2)
LOCAL_CFLAGS += -DANDROID_SIM_COUNT_2
endif
条件编译,ifeq判断相等。
LOCAL_MODULE:= rild
生成的模块名称,要唯一并且不含空格,系统会自动添加前缀和后缀。
若生成动态库,则生成 librild.so;若名称为 librild,则不会添加前缀,依然是 librild.so。
LOCAL_MODULE_TAGS := optional
该模块在所以版本下都编译。(user版本、eng版本、optional所有版本)
include $(BUILD_EXECUTABLE)
指定编译方法。
BUILD_STATIC_LIBRARY:编译为静态库
BUILD_SHARED_LIBRARY:编译为动态库
BUILD_EXECUTABLE:编译为C可执行程序
BUILD_JAVA_LIBRARY:编译为Java类库
BUILD_PACKAGE:编译为Android应用程序包
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
指定目标文件最终安装位置——out/target/product/rk3288/system/lib/hw
| 编译变量 | 功能 |
| LOCAL_PATH | 指定编译路径 |
| LOCAL_MODULE | 指定编译模块名 |
| LOCAL_SRC_FILES | 指定编译源码列表 |
| LOCAL_SHARED_LIBRARIES | 指定使用的c/c++共享库列表 |
| LOCAL_STATIC_LIBRARIES | 指定使用的c/c++静态库列表 |
| LOCAL_STATIC_JAVA_LIBRARIES | 指定使用的Java库列表 |
| LOCAL_CFLAGS | 指定编译器参数 |
| LOCAL_C_INCLUDES | 指定c/c++头文件路径 |
| LOCAL_PACKAGE_NAME | 指定Android应用程序名 |
| LOCAL_CERTIFICATE | 指定签名认证 |
| LOCAL_JAVA_LIBRARIES | 指定使用的Java库列表 |
| LOCAL_SDK_VERSION | 指定编译Android应用程序时的SDK版本 |
Android.mk语法解析的更多相关文章
- Android.mk文件解析
一.一个简单的Android.mk文件例如以下: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := nativ ...
- Android.mk语法说明
版权申明: 本文原创首发于以下网站,您可以自由转载,但必须加入完整的版权声明 博客园:https://www.cnblogs.com/MogooStudio/ csdn博客:https://blog. ...
- Android JSON语法解析示例
参考: http://www.open-open.com/lib/view/open1326376799874.html https://www.cnblogs.com/jycboy/p/json_x ...
- Android.mk 文件语法详解
0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build Syst ...
- Android.mk 文件语法详解 转:http://blog.sina.com.cn/s/blog_602f8770010148ce.html
0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build Syst ...
- Android.mk文件语法规范 原文
序言:------------- 此文档旨在描述Android.mk文件的语法,Android.mk文件为Android NDK(原生开发)描述了你C/C++源文件.为了明白下面的内容,你必须已经阅读 ...
- Android JNI的Android.mk文件语法详解
Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build System解 ...
- Android.mk相关知识
Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.要掌握jni,就必须熟练掌握Andr ...
- Android.mk详解
Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.要掌握jni,就必须熟练掌握Andr ...
随机推荐
- mbstring.so下载安装
linux下安装: $:cd /php7.0/ext/mbstring 切换到源码包目录下 $:/usr/local/php/bin/phpize 执行这句 $:./configure –with-p ...
- bzoj2700
题解: dp dp[i][j]表示i个红,j个绿的最小代价 然后再加上两位k,l,表示k个红连,l个绿连 然后转移 代码: #include<bits/stdc++.h> using na ...
- PentesterLab-From SQL Injection to Shell: PostgreSQL edition
一.打开页面,随便点了几下,返现和From SQL Injection to Shell差不多,直奔主题开始注入 由于PostgreSQL与MySQL不同,几个关注点需要注意下 二.order by下 ...
- RxJava 1.x 笔记:创建型操作符
本篇文章是阅读 官方文档 的笔记. 作者:shixinzhang(百度搜索 "shixinzhang CSDN" 即可找到我) RxJava 也用了有段时间,那么多操作符总不想去记 ...
- azure 架构选择
在azure中主要有以下3种不同的托管环境. 平台即服务(PaaS)提供了可管理的托管环境,可以直接部署应用而不需要关心背后的虚拟机和网络资源.例如,当需要托管一个应用时,只需要指定实例的个数,azu ...
- 4. 什么是应用服务器? - JavaEE基础系列
本文是JavaEE基础系列的第四节. Java EE简介 - JavaEE基础系列 JSR简介 - JavaEE基础系列 什么是JSR参考实现? - JavaEE基础系列 上一节介绍了什么是JSR参考 ...
- Linux基本概念及操作
基本概念及操作 一.实验介绍 1.1 实验内容: 实验楼环境介绍 常用 Shell 命令及快捷键 Linux 使用小技巧 1.2 实验知识点 Linux 基本命令 通配符的使用 基本软件安装 查看帮助 ...
- UNIX 环境高级编程 文件和目录
函数stat , fstat , fstatat , lstat stat函数返回与此文件有关的信息结构. fstat函数使用已打开的文件描述符(而stat则使用文件名) fstatat函数 为一个相 ...
- 【剑指offer】圆圈中最后剩下的数字(约瑟夫问题),C++实现
原创博文,转载请注明出处! # 题目 # 思路 本题即为典型的约瑟夫问题,通过递推公式倒推出问题的解.原始问题是从n个人中每隔m个数踢出一个人,原始问题变成从n-1个人中每隔m个数踢出一个人-- ...
- win8 ie10 debug flex
win8 ie10 使用flash debug方法: 删除c:\WINDOWS\system32\Macromed\Flash.c:\WINDOWS\SysWOW64\Macromed\Flash里面 ...