Android.mk 积累

本文详细介绍了Android.mk文件在Android系统编译过程中的作用及其配置方法。包括不同类型的模块(如APK、JAVA库、C/C++应用程序等)如何通过定义特定变量来指定编译规则,并解释了关键配置项的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考站点:
http://blog.youkuaiyun.com/zhandoushi1982

Android.mk在编译系统中的作用

Android.mk用于描述将一包源文件以何种模块形式编译到Android系统中常用的模块形式如下 例子可从Android4.4源码下载:
1、APK程序 例子:frameworks/base/core/res/Android.mk
2、JAVA库 例子:frameworks/base/services/java/Android.mk
3、C\C++应用程序 例子:frameworks/base/cmds/app_process/Android.mk
4、C\C++静态库 例子:frameworks/native/libs/binder/Android.mk
5、C\C++共享库 例子:frameworks/base/services/jni/Android.mk
6、保持原格式 例子:frameworks/base/data/fonts/Android.mk

公共部分

1、LOCAL_PATH := $(call my-dir) 参见build/core/definitions.mk 用于返回当前路径
2、include $(CLEAR_VARS) 参见build/core/config.mk 用于清除环境变量
3、LOCAL_MODULE := XXX LOCAL_MODULE变量必须定义且唯一
4、LOCAL_SRC_FILES := XXX.zzz LOCAL_SRC_FILES变量可以根据最终要编译的模块形式选择多种格式的文件(java/jar/c/cpp/a/so)非源码且非编译中间文件可用BUILD_PREBUILT参数将源文件编译到系统中
5、LOCAL_MODULE_PATH := XXX 将模块输出到哪个目录 可取如下内容:
TARGET_ROOT_OUT: out/target/product/xxxxx/root
TARGET_OUT: out/target/product/xxxx/system
TARGET_OUT_DATA: out/target/product/xxxx/data
TARGET_OUT_SHARED_LIBRARIES: out/target/product/xxxx/system/lib
TARGET_OUT_APPS: out/target/product/xxxx/system/app
ANDROID_PRODUCT_OUT: out/target/product/xxxx/
TARGET_OUT_JAVA_LIBRARIES: out/target/product/xxxx/system/framework
6、include $(BUILD_XXX_XXX) 将源文件以何种方式编入系统 可取如下内容:
BUILD_EXECUTABLE
BUILD_STATIC_LIBRARY
BUILD_SHARED_LIBRARY
BUILD_PACKAGE
BUILD_STATIC_JAVA_LIBRARY
BUILD_PREBUILT

可选部分 I

7、LOCAL_C_INCLUDES:定义头文件的搜索路径
8、LOCAL_CFLAGS:定义宏
9、LOCAL_STATIC_LIBRARIES:引入静态库
10、LOCAL_SHARED_LIBRARIES:引入动态库
11、LOCAL_DEX_PREOPT: 是否做odex优化

可选部分 II

12、include $(call all-subdir-xxx):望文生义 参见build/core/definitions.mk
13、置空 用于屏蔽子目录的Android.mk


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值