Android.mk模板

此文列出Android.mk的常用模板(部分内容源于多篇他人博客,这里不具体指出),如有错漏,还请在评论中指出,后期持续更新

 
#链接第三方动态库,在和部分android源码的编译中验证不过
LOCAL_PATH := $(call my-dir)  
include $(CLEAR_VARS)  
LOCAL_MODULE := foo-prebuilt  
LOCAL_SRC_FILES := libfoo.so  
include $(PREBUILT_SHARED_LIBRARY)
 
#预编译第三方提供的apk,将其加入到编译结果中
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)   
LOCAL_MODULE := LocalModuleName
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)   
include $(BUILD_PREBUILT)
 
#编译子目录下的源码为静态jar包
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS) 
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_JAVA_LIBRARIES := android.test.runner
LOCAL_MODULE := sample
include $(BUILD_STATIC_JAVA_LIBRARY)
#以下这条则是编译为动态jar包
include $(BUILD_JAVA_LIBRARY)
 
#预编译静态jar包
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libname:lib/needimport.jar  
include $(BUILD_MULTI_PREBUILT)
 
#构建一个被platform key签名的apk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := LocalPackage   
LOCAL_JAVACFLAGS := -encoding GBK  #指定代码字符集(可选),用于处理 unmappable character for encoding UTF-8
LOCAL_CERTIFICATE := platform   #注意这行
include $(BUILD_PACKAGE)
 
#编译apk依赖某个jar包
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_STATIC_JAVA_LIBRARIES := static-library
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := LocalPackage
include $(BUILD_PACKAGE)
 
#编译静态库
include $(CLEAR_VARS)
LOCAL_MODULE := foo
LOCAL_SRC_FILES := foo/foo.c
LOCAL_EXPORT_LDLIBS := -llog
include $(BUILD_STATIC_LIBRARY)

#编译动态库
include $(CLEAR_VARS)
LOCAL_MODULE := bar
LOCAL_SRC_FILES := bar.c
LOCAL_STATIC_LIBRARIES := foo
include $(BUILD_SHARED_LIBRARY)
 
#拷贝文件到out相应的类型下,在部分第三方提供的源码编译中未实现
LOCAL_MODULE := test.xml
LOCAL_MODULE_TAGS := optional 
LOCAL_MODULE_CLASS := ETC 
LOCAL_SRC_FILES := $(LOCAL_MODULE) 
LOCAL_MODULE_PATH := $(TARGET_OUT) 
include $(BUILD_PREBUILT)
 
#链接第三方动态库,静态库,jar包
include $(CLEAR_VARS)
LOCAL_PREBUILT_LIBS := libabc:libaaa.so
include $(BUILD_MULTI_PREBUILT)
......
LOCAL_STATIC_LIBRARIES := libabc
 
链接第三方shared或static库时, makefile在r4及r5b的寫法有點不一樣
--------------------------For r4 ------------------------
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
#for Android log
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
LOCAL_SRC_FILES:= src/Test.c
#Load static library (*.a) for ndk version 4
LOCAL_LDFLAGS := $(LOCAL_PATH)/lib/lib1.a
LOCAL_LDFLAGS += $(LOCAL_PATH)/lib/lib2.a
#Set library name as Test
LOCAL_MODULE := Test
#Export shared library
include $(BUILD_SHARED_LIBRARY)

--------------------------For r5b ------------------------
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := LIB1
LOCAL_SRC_FILES := lib/lib1.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := LIB2
LOCAL_SRC_FILES := lib/lib2.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
LOCAL_MODULE := Test
LOCAL_SRC_FILES:= src/Test.c
LOCAL_STATIC_LIBRARIES := LIB1 LIB2
include $(BUILD_SHARED_LIBRARY)

#apk中包含jni库
include $(CLEAR_VARS)  
LOCAL_PACKAGE_NAME := LocalPackage   
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FIELS := $(call all-subdir-java-files)
LOCAL_JNI_SHARED_LIBRARIES := libXXX
LOCAL_REQUIRED_MODULES := libXXX
include $(BUILD_PACKAGE)
posted @ 2017-02-23 16:18  乐征Thestrals  阅读(620)  评论(0编辑  收藏  举报