Android.mk实例

当一个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/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)
这个例子就结束了,其他模块类似!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值