Android源码下各种Android.mk的编写
快过年了公司不景气,也么有很多的事情要忙。正好趁着有时间,总结一下在Android源码下各种模块Android.mk的编写!关于Android.mk详细的语法描述和细节我这里就不做过多的描述了,因为网上关于这方面的知识有很多,我这里列举出来的是几个经常用到的模块编写实例。希望对在Android源码下开发的Android新人们有一定的帮助。废话不多说直接上实例。
1.编写生成普通的APK,该APK中没有包含.so文件也没有引用第三方jar包
- # Copyright 2011 The Android Open Source Project
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := optional
- LOCAL_SRC_FILES := $(call all-java-files-under, src)
- LOCAL_PACKAGE_NAME := CoshipUpgrade
- LOCAL_CERTIFICATE := platform
- include $(BUILD_PACKAGE)
- # This finds and builds the test apk as well, so a single make does both.
- include $(call all-makefiles-under,$(LOCAL_PATH))
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := optional
- LOCAL_MODULE_PATH := $(TARGET_OUT_APPS)/apk
- LOCAL_SRC_FILES := $(call all-subdir-java-files)
- LOCAL_STATIC_JAVA_LIBRARIES := cling-core-1.0.5 \
- cling-support-1.0.5 \
- teleal-common-1.0.13 \
- universal-image-loader \
- core-zxing
- LOCAL_PACKAGE_NAME := coshareservice
- LOCAL_CERTIFICATE := platform
- #LOCAL_JNI_SHARED_LIBRARIES := libmouse_cmd
- include $(BUILD_PACKAGE)
- MY_PATH := $(LOCAL_PATH)
- LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := cling-core-1.0.5:libs/cling-core-1.0.5.jar \
- cling-support-1.0.5:libs/cling-support-1.0.5.jar \
- teleal-common-1.0.13:libs/teleal-common-1.0.13.jar \
- universal-image-loader:libs/universal-image-loader-1.9.2-SNAPSHOT-with-sources.jar \
- core-zxing:libs/core.jar
- include $(BUILD_MULTI_PREBUILT)
- #include $(call all-makefiles-under,$(LOCAL_PATH))
3.预编译只提供APK没有提供源码,且不包含.so文件
- LOCAL_PATH := $(call my-dir)
- ###############################################
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := optional
- LOCAL_MODULE := FlyUI_Wallpaper_mtk
- LOCAL_MODULE_PATH := $(TARGET_OUT_APPS)/apk
- LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
- LOCAL_MODULE_CLASS := APPS
- LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
- LOCAL_CERTIFICATE := platform
- include $(BUILD_PREBUILT)
4.预编译只提供APK没有提供源码,且不包含.so文件
- LOCAL_PATH:= $(call my-dir)
- ###############################################
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := optional
- LOCAL_MODULE := YOUKU
- LOCAL_MODULE_PATH := $(TARGET_OUT_APPS)
- LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
- LOCAL_MODULE_CLASS := APPS
- LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
- LOCAL_CERTIFICATE := platform
- include $(BUILD_PREBUILT)
- include $(CLEAR_VARS)
- LOCAL_PREBUILT_LIBS := libhello-jni.so
- LOCAL_MODULE := libhello-jni
- LOCAL_MODULE_TAGS := optional
- include $(BUILD_MULTI_PREBUILT)
- include $(CLEAR_VARS)
- LOCAL_PREBUILT_LIBS := libalgmsyoukutv.so
- LOCAL_MODULE := libalgmsyoukutv
- LOCAL_MODULE_TAGS := optional
- include $(BUILD_MULTI_PREBUILT)
- include $(CLEAR_VARS)
- LOCAL_PREBUILT_LIBS := libluajavayoukutv.so
- LOCAL_MODULE := libluajavayoukutv
- LOCAL_MODULE_TAGS := optional
- include $(BUILD_MULTI_PREBUILT)
4.编译生成可执行文件
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE_TAGS := optional
- LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)
- LOCAL_SRC_FILES:= \
- gpio-server.c
- LOCAL_SHARED_LIBRARIES := \
- libcurl \
- libcutils
- LOCAL_MODULE:= gpio-server
- include $(BUILD_EXECUTABLE)
- include $(call all-makefiles-under,$(LOCAL_PATH))
5.编译生成共享库,这里生成的是libandroid_servers.so。由于涉及到的文件太多这里就不截图了
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_SRC_FILES:= \
- com_android_server_AlarmManagerService.cpp \
- com_android_server_BatteryService.cpp \
- com_android_server_InputApplicationHandle.cpp \
- com_android_server_InputManager.cpp \
- com_android_server_InputWindowHandle.cpp \
- com_android_server_LightsService.cpp \
- com_android_server_PowerManagerService.cpp \
- com_android_server_SystemServer.cpp \
- com_android_server_UsbDeviceManager.cpp \
- com_android_server_UsbHostManager.cpp \
- com_android_server_VibratorService.cpp \
- com_android_server_location_GpsLocationProvider.cpp \
- com_android_server_connectivity_Vpn.cpp \
- com_android_server_ConnectivityService.cpp \
- onload.cpp
- LOCAL_C_INCLUDES += \
- $(JNI_H_INCLUDE) \
- frameworks/base/services \
- frameworks/base/core/jni \
- external/skia/include/core
- LOCAL_SHARED_LIBRARIES := \
- libandroid_runtime \
- libcutils \
- libhardware \
- libhardware_legacy \
- libnativehelper \
- libsystem_server \
- libutils \
- libui \
- libinput \
- libskia \
- libgui \
- libusbhost
- ifeq ($(WITH_MALLOC_LEAK_CHECK),true)
- LOCAL_CFLAGS += -DMALLOC_LEAK_CHECK
- endif
- LOCAL_MODULE:= libandroid_servers
- include $(BUILD_SHARED_LIBRARY)
6.编译生成jar静态库
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- # 获取所有子目录中的 Java 文件
- LOCAL_SRC_FILES := $(call all-subdir-java-files)
- # 当前模块依赖的动态 Java 库名称
- LOCAL_JAVA_LIBRARIES := android.test.runner
- # 当前模块的名称
- LOCAL_MODULE := sample
- # 将当前模块编译成一个静态的 Java 库
- include $(BUILD_STATIC_JAVA_LIBRARY)