Android.mk实例

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

那Android.mk该如何编写呢?

请看目录结构图:

Android.mk实例_第1张图片

其中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/jni
else
LOCAL_PATH:=apps/musicdecode/project/jni
endif
#LOCAL_PATH := $(call my-dir)

# common codecs & startup library
include $(CLEAR_VARS)
LOCAL_MODULE := musicdecode
LOCAL_STATIC_LIBRARIES := wav wv mpc alac ape flac
LOCAL_CFLAGS += -O2 -Wall -DBUILD_STANDALONE -DCPU_ARM -DAVSREMOTE -finline-functions -fPIC -D__ARM_EABI__=1 -DOLD_LOGDH
LOCAL_SRC_FILES := main.c
LOCAL_ARM_MODE := arm
LOCAL_LDLIBS := -llog -ldl
include $(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 := wav

LOCAL_SRC_FILES += main.c
LOCAL_CFLAGS += -O2 -Wall -DBUILD_STANDALONE -DCPU_ARM -finline-functions -fPIC 
#-DDBG_TIME
LOCAL_ARM_MODE := arm

include $(BUILD_STATIC_LIBRARY)

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

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

你可能感兴趣的:(Android.mk实例)