android之Android.mk小结

在android系统源码下编译,一定得写Android.mk,作用和makefile一样,告诉别人你有几个模块,每个模块叫啥,依赖些啥,要编译成个啥。


Android模块一般有以下几种类型:

 1)APK程序,一般的Android程序,编译打包生成apk文件
 2)JAVA库,java类库,编译打包生成jar文件
 3)  C\C++应用程序,可执行的C\C++应用程序
 4)C\C++静态库,编译生成C\C++静态库,并打包成.a文件
 5)C\C++共享库, 编译生成共享库(动态链接库),并打包成.so文件


每个模块在Android.mk都有类似下面的一段说明:

LOCAL_PATH := $(call my-dir)                  //定义LOCAL_PATH 为当前目录
include $(CLEAR_VARS)                         //清空之前的LOCAL_XXX 变量,避免影响本模块的编译
LOCAL_MODULE := hello world                   //模块名称
LOCAL_C_INCLUDES := helloworld.h              //头文件
LOCAL_SRC_FILES := helloworld.c               //源码
LOCAL_STATIC_LIBRARIES := XXX                 //本模块依赖的静态库
LOCAL_SHARED_LIBRARIES :=   XXX               //本模块依赖的动态库
LOCAL_LDLIBS :=   XXX                         //编译的链接选项,相当于gcc -l后的参数
LOCAL_CFLAGS :=  XXX                          //编译选项,相当于gcc -O后面的参数
include $(BUILD_SHARED_LIBRARY)               //本模块是个c/c++的动态库,编译完是个so


其他的一些变量:
include $(BUILD_EXECUTABLE)                //编译结果是可执行程序
include $(BUILD_STATIC_LIBRARY)         //编译结果是静态库
include $(BUILD_SHARED_LIBRARY)      //编译成结果是动态库
include $(BUILD_PACKAGE)                  //编译结果是apk文件

LOCAL_PACKAGE_NAME:= XXX          //指明apk文件名

LOCAL_MODULE_TAGS :=  user/eng/tests/optional

user: 指该模块只在user版本下才编译

eng: 指该模块只在eng版本下才编译

tests: 指该模块只在tests版本下才编译

optional:指该模块在所有版本下都编译


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值