歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 淺析Android下的Android.mk文件

淺析Android下的Android.mk文件

日期:2017/3/1 10:41:27   编辑:Linux編程

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. LOCAL_SRC_FILES:= \
  4. android_media_MediaPlayer.cpp \
  5. android_media_MediaRecorder.cpp \
  6. android_media_MediaScanner.cpp \
  7. android_media_MediaMetadataRetriever.cpp \
  8. android_media_ResampleInputStream.cpp \
  9. android_media_MediaProfiles.cpp \
  10. android_media_AmrInputStream.cpp \
  11. android_media_Utils.cpp \
  12. android_mtp_MtpDatabase.cpp \
  13. android_mtp_MtpDevice.cpp \
  14. android_mtp_MtpServer.cpp \
  15. LOCAL_SHARED_LIBRARIES := \
  16. libandroid_runtime \
  17. libnativehelper \
  18. libutils \
  19. libbinder \
  20. libmedia \
  21. libskia \
  22. libui \
  23. libcutils \
  24. libgui \
  25. libstagefright \
  26. libcamera_client \
  27. libsqlite \
  28. libmtp \
  29. libusbhost \
  30. libexif
  31. LOCAL_C_INCLUDES += \
  32. external/jhead \
  33. external/tremor/Tremor \
  34. frameworks/base/core/jni \
  35. frameworks/base/media/libmedia \
  36. frameworks/base/media/libstagefright/codecs/amrnb/enc/src \
  37. frameworks/base/media/libstagefright/codecs/amrnb/common \
  38. frameworks/base/media/libstagefright/codecs/amrnb/common/include \
  39. frameworks/base/media/mtp \
  40. $(PV_INCLUDES) \
  41. $(JNI_H_INCLUDE) \
  42. $(call include-path-for, corecg graphics)
  43. LOCAL_CFLAGS +=
  44. LOCAL_LDLIBS := -lpthread
  45. LOCAL_MODULE:= libmedia_jni
  46. include $(BUILD_SHARED_LIBRARY)
  47. # build libsoundpool.so
  48. # build libaudioeffect_jni.so
  49. include $(call all-makefiles-under,$(LOCAL_PATH))
首先必須定義好LOCAL_PATH變量。然後清除所有LOCAL_XX變量的值,當然LOCAL_PATH的值除外,然後定義源文件,頭文件,接著是編譯選項參數,緊接著是編譯生成的文件名,最後是生成的文件類型.
Copyright © Linux教程網 All Rights Reserved