0
点赞
收藏
分享

微信扫一扫

Android.mk的多种用法

Android.mk在android的系统开发中毫无疑问是很重要的,它的作用比较强大,可以将c/c++代码编译成可执行程序,动态库,静态库,当然也可以将java代码编译成二进制代码,jar包,apk等等,一下就列举几个例子来说明是如何使用的:

1,编写方法: 抄模板,个人不建议默写,android源码中的模板遍地都是,所以不用担心不会写

2,Android.mk的写法实际是基于Makefile的,所以基本的规则还是不能有悖于Makfile,Makefile的一个规则是:

目标 :依赖

      编译规则   #注意规则前面有一个tab

3,最简单的模板:hardware/ril/rild/Android.mk

#获取Androd.mk所在路径
LOCAL_PATH:= $(call my-dir)
#清空以LOCAL_xxx的变量, 除了LOCAL_PATH
include $(CLEAR_VARS)
#指定源文件
LOCAL_SRC_FILES:= \
        rild.c
#指定目标文件
LOCAL_MODULE:= rild
#编译规则
include $(BUILD_EXECUTABLE)

-------------------------------------------------------------------

c/c++代码编译成elf可执行程序:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
       hello.c

# optional表示在任何模式下都会编译

LOCAL_MODULE_TAGS := optional
LOCAL_MODULE:= hello_elf
include $(BUILD_EXECUTABLE)

-----------------------------------------------------------------

编译成动态库

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES:= myled_jni.cpp
LOCAL_SHARED_LIBRARIES := \
        libutils
LOCAL_MODULE:=libled_jni
include $(BUILD_SHARED_LIBRARY)

-----------------------------------------------------------------------------------------------------------------------------------

预编译: 表示拷贝
prebuilt/android-arm/gdbserver$ vim Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := ADV7123.pdf
LOCAL_MODULE := ADV7123.pdf

#指定目标文件安装路径
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_TAGS := optional

#预编译方式
include $(BUILD_PREBUILT)



举报

相关推荐

0 条评论