Welcome 微信登录

首页 / 操作系统 / Linux / 浅析Android下的Android.mk文件

1 概述大家都知道在Linux下编辑经常要写一个Makefile文件, 可以把这个Makefile文件理解成一个编译配置文件,它保存着如何编译的配置信息,即指导编译器如何来编译程序,并决定编译的结果是什么。而在Android下的Android.mk文件也是类型的功能,顾名思义,从名字上就可以猜测得到,Android.mk文件是针对Android的Makefile文件.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件。编译系统为你处理许多细节问题。2 Android.mk的整体结构例如一个Android.mk的内容如下:
  1. LOCAL_PATH:= $(call my-dir)  
  2. include $(CLEAR_VARS)  
  3.   
  4. LOCAL_SRC_FILES:=   
  5.     android_media_MediaPlayer.cpp   
  6.     android_media_MediaRecorder.cpp   
  7.     android_media_MediaScanner.cpp   
  8.     android_media_MediaMetadataRetriever.cpp   
  9.     android_media_ResampleInputStream.cpp   
  10.     android_media_MediaProfiles.cpp   
  11.     android_media_AmrInputStream.cpp   
  12.     android_media_Utils.cpp   
  13.     android_mtp_MtpDatabase.cpp   
  14.     android_mtp_MtpDevice.cpp   
  15.     android_mtp_MtpServer.cpp   
  16.   
  17. LOCAL_SHARED_LIBRARIES :=   
  18.     libandroid_runtime   
  19.     libnativehelper   
  20.     libutils   
  21.     libbinder   
  22.     libmedia   
  23.     libskia   
  24.     libui   
  25.     libcutils   
  26.     libgui   
  27.     libstagefright   
  28.     libcamera_client   
  29.     libsqlite   
  30.     libmtp   
  31.     libusbhost   
  32.     libexif  
  33.   
  34. LOCAL_C_INCLUDES +=   
  35.     external/jhead   
  36.     external/tremor/Tremor   
  37.     frameworks/base/core/jni   
  38.     frameworks/base/media/libmedia   
  39.     frameworks/base/media/libstagefright/codecs/amrnb/enc/src   
  40.     frameworks/base/media/libstagefright/codecs/amrnb/common   
  41.     frameworks/base/media/libstagefright/codecs/amrnb/common/include   
  42.     frameworks/base/media/mtp   
  43.     $(PV_INCLUDES)   
  44.     $(JNI_H_INCLUDE)   
  45.     $(call include-path-for, corecg graphics)  
  46.   
  47. LOCAL_CFLAGS +=  
  48.   
  49. LOCAL_LDLIBS := -lpthread  
  50.   
  51. LOCAL_MODULE:libmedia_jni  
  52.   
  53. include $(BUILD_SHARED_LIBRARY)  
  54.   
  55. # build libsoundpool.so  
  56. # build libaudioeffect_jni.so  
  57. include $(call all-makefiles-under,$(LOCAL_PATH))  
首先必须定义好LOCAL_PATH变量。然后清除所有LOCAL_XX变量的值,当然LOCAL_PATH的值除外,然后定义源文件,头文件,接着是编译选项参数,紧接着是编译生成的文件名,最后是生成的文件类型.