Android Makefile example

本文详细介绍了如何使用Android NDK进行应用开发,并通过Android.mk文件构建JNI库,涉及目录结构、变量定义、编译参数设置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. example 1

# run ndk-build in parent directory of jni

#jni/Android.mk

#jni/include/test1.h

........

#jni/include/testn.h

#jni/include/client/client1.h

.........

#jni/include/client/clientn.h

#jni/include/common/comm1.h

.......

#jni/include/common/comm2.h

#jni/client/client1.cpp

.....

#jni/client/clientn.cpp

 

BUILD_ROOT := `pwd`\build

LOCAL_PATH := $(call my-dir)
BUILD_PATH := $(LOCAL_PATH)/$(BUILD_ROOT)

include $(CLEAR_VARS)

CLIENT_ROOT := client
ANDROID_INC := $(ANDROID_NDK_ROOT)/platforms/android-14/arch-arm/usr/include
RTSPINC_INC := /home/frank/workspace/Vrtsp/jni/include

LOCAL_C_INCLUDES := $(ANDROID_INC)
LOCAL_C_INCLUDES += $(RTSPINC_INC)

RTSPCLI_SRC := $(CLIENT_ROOT)/rtspclient.cpp
.........

RTSPCLI_SRC += $(CLIENT_ROOT)/rtp.cpp

LOCAL_CFLAGS += -DLINUX
LOCAL_MODULE    := rtspclient
LOCAL_SRC_FILES := $(RTSPCLI_SRC)

include $(BUILD_SHARED_LIBRARY)

  

2. example 2
Android.mk

BUILD_ROOT := `pwd`\build

LOCAL_PATH := $(call my-dir) BUILD_PATH := $(LOCAL_PATH)/$(BUILD_ROOT)

include $(CLEAR_VARS)

CLIENT_ROOT := client ANDROID_INC := $(ANDROID_NDK_ROOT)/platforms/android-14/arch-arm/usr/include RTSPINC_INC := /home/frank/workspace/vv/jni/client/include

LOCAL_C_INCLUDES := $(ANDROID_INC) LOCAL_C_INCLUDES += $(RTSPINC_INC)

RTSPCLI_SRC := $(CLIENT_ROOT)/a.cpp RTSPCLI_SRC += $(CLIENT_ROOT)/b.cpp ................................... RTSPCLI_SRC += $(CLIENT_ROOT)/client.cpp

LOCAL_CFLAGS += "-DLINUX -DANDROID" LOCAL_CPPFLAGS += "-DLINUX -DANDROID" LOCAL_CXXFLAGS += "-DLINUX -DANDROID"

LOCAL_MODULE    := rtspclient LOCAL_SRC_FILES := $(RTSPCLI_SRC)

include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS) LOCAL_C_INCLUDES := $(ANDROID_INC) LOCAL_C_INCLUDES += $(RTSPINC_INC)

LOCAL_CFLAGS += "-DLINUX -DANDROID" LOCAL_CPPFLAGS += "-DLINUX -DANDROID" LOCAL_CXXFLAGS += "-DLINUX -DANDROID"

LOCAL_MODULE    := myclient LOCAL_SRC_FILES := $(RTSPCLI_SRC) include $(BUILD_SHARED_LIBRARY)

 
Application.mk
 
APP_MODULES := rtspclient myclient
 
3. exe

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES:=  \  surfaceflinger.cpp \  demo.c

LOCAL_MODULE:= demo

LOCAL_SHARED_LIBRARIES := libui libutils

include $(BUILD_EXECUTABLE)

 

4. another example

 

BUILD_ROOT := `pwd`\build

LOCAL_PATH := $(call my-dir)
BUILD_PATH := $(LOCAL_PATH)/$(BUILD_ROOT)

#FFMPEG_ROOT := /home/frank/workspace/AndroidFFmpeg/libs/armv7
FFMPEG_ROOT := /home/frank/workspace/onevideo/jni/ffmpeg/libs/armv7
FFMPEG_INC := $(FFMPEG_ROOT)/include
FFMPEG_LIB := $(FFMPEG_ROOT)

ANDROID_INC := $(ANDROID_NDK_ROOT)/platforms/android-14/arch-arm/usr/include
RENDER_ROOT := render
CLIENT_ROOT := client

RENDER_INC := /home/frank/workspace/onevideo/jni/render/include
CLIENT_INC := /home/frank/workspace/onevideo/jni/client/include
COMMON_INC := /home/frank/workspace/onevideo/jni/common/include

#render module
include $(CLEAR_VARS)

LOCAL_C_INCLUDES := $(ANDROID_INC)
LOCAL_C_INCLUDES += $(FFMPEG_INC)
LOCAL_C_INCLUDES += $(RENDER_INC)
LOCAL_C_INCLUDES += $(COMMON_INC)

LOCAL_CFLAGS := -DLINUX -DANDROID -DRENDER

#LOCAL_LDFLAGS += $(FFMPEG_LIB)/libffmpeg.a

LOCAL_MODULE    := render
LOCAL_SRC_FILES := $(RENDER_ROOT)/render.c
#LOCAL_SRC_FILES += $(RENDER_ROOT)/register.c
#LOCAL_SRC_FILES += $(RENDER_ROOT)/yuv2rgb.c
LOCAL_SRC_FILES += $(RENDER_ROOT)/yuv2rgb.s
LOCAL_SRC_FILES += $(RENDER_ROOT)/yuv2rgbtab.c
include $(BUILD_STATIC_LIBRARY)

#client module
include $(CLEAR_VARS)
CLIENT_SRC := $(CLIENT_ROOT)/rtspclient.cpp
CLIENT_SRC += $(CLIENT_ROOT)/register.cpp
CLIENT_SRC += $(CLIENT_ROOT)/client.cpp

LOCAL_C_INCLUDES := $(ANDROID_INC)
LOCAL_C_INCLUDES += $(CLIENT_INC)
LOCAL_C_INCLUDES += $(RENDER_INC)
LOCAL_C_INCLUDES += $(COMMON_INC)

LOCAL_CFLAGS := -DLINUX -DANDROID -DCLIENT -Wno-psabi -fPIC

LOCAL_LDLIBS := -llog -L$(ANDROID_NDK_ROOT)/platforms/android-14/arch-arm/usr/lib -lGLESv1_CM -L$(FFMPEG_LIB) -lffmpeg

LOCAL_MODULE    := xplayer
LOCAL_SRC_FILES := $(CLIENT_SRC)

LOCAL_STATIC_LIBRARIES := render

include $(BUILD_SHARED_LIBRARY)

 

 

#NDK_TOOLCHAIN_VERSION=4.4.3
APP_MODULES := xplayer render

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值