歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> 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的值除外,然後定義源文件,頭文件,接著是編譯選項參數,緊接著是編譯生成的文件名,最後是生成的文件類型.
Copyright © Linux教程網 All Rights Reserved