Android.mk实例

来源:互联网 发布:同仁堂淘宝旗舰店真假 编辑:程序博客网 时间:2024/06/06 04:26

当一个JNI中包括多个模块时,比如播放器中常用的解码器就是常见的情况。可能播放器中包括ape解码器,wav解码器和flac解码器等。

那Android.mk该如何编写呢?

请看目录结构图:


其中Android.mk为主文件,其内容为:

include $(call all-subdir-makefiles)#CODECS := wav wv mpc alac ape flac#codec-makefiles =  $(patsubst %,$(call my-dir)/%/Android.mk,$(CODECS)) #include $(call codec-makefiles)ifneq ($(NDK_ROOT),)LOCAL_PATH:=$(NDK_ROOT)/apps/musicdecode/project/jnielseLOCAL_PATH:=apps/musicdecode/project/jniendif#LOCAL_PATH := $(call my-dir)# common codecs & startup libraryinclude $(CLEAR_VARS)LOCAL_MODULE := musicdecodeLOCAL_STATIC_LIBRARIES := wav wv mpc alac ape flacLOCAL_CFLAGS += -O2 -Wall -DBUILD_STANDALONE -DCPU_ARM -DAVSREMOTE -finline-functions -fPIC -D__ARM_EABI__=1 -DOLD_LOGDHLOCAL_SRC_FILES := main.cLOCAL_ARM_MODE := armLOCAL_LDLIBS := -llog -ldlinclude $(BUILD_SHARED_LIBRARY)
这样编译的就是一个可以在libs中生成libmusiccode.so的动态库文件,其中它又需要调用各个子模块中生成的静态库文件
LOCAL_STATIC_LIBRARIES := wav wv mpc alac ape flac
,例如wav库的内容结构图如下:


其中这个子目录的Android.mk如下:

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := wavLOCAL_SRC_FILES += main.cLOCAL_CFLAGS += -O2 -Wall -DBUILD_STANDALONE -DCPU_ARM -finline-functions -fPIC #-DDBG_TIMELOCAL_ARM_MODE := arminclude $(BUILD_STATIC_LIBRARY)

可以很清楚简单的看出,它生成的是一个静态库文件wav.a供主Android.mk文件编译时调用,主Android.mk文件还有句

include $(call all-subdir-makefiles)
这个例子就结束了,其他模块类似!