一分钟学会Android.mk

 时间:2026-02-12 17:07:01

1、Android.mk的作用

它是告诉ndk将jni代码编译生成动态库的一个编译脚本,基本上写jni代码是少不了一个Android.mk文件的

一分钟学会Android.mk

2、主要的android jni项目目录结构如下图所示

一分钟学会Android.mk

3、写一个最简单的Android.mk,如下图所示

#保存当前目录的宏

LOCAL_PATH := $(call my-dir)  

#清除全局宏定义的值

include $(CLEAR_VARS)

#生成的库的名称

LOCAL_MODULE := othermodule

#库编译需要的源码文件和依赖库

LOCAL_SRC_FILES := lib/libothermodule-57.so

#告诉Ndk编译成动态库

include $(PREBUILT_SHARED_LIBRARY)

一分钟学会Android.mk

4、来一个复杂一点的

#保存当前目录的宏

LOCAL_PATH := $(call my-dir)  

#清除全局宏定义的值

include $(CLEAR_VARS)

#生成的库的名称

LOCAL_MODULE := othermodule

#库编译需要的源码文件和依赖库

LOCAL_SRC_FILES := lib/libothermodule-57.so

#告诉Ndk编译成动态库

include $(PREBUILT_SHARED_LIBRARY)

#清除全局宏定义的值

include $(CLEAR_VARS)

#是否允许未定义的符号

LOCAL_ALLOW_UNDEFINED_SYMBOLS=false

#生成的库的名称

LOCAL_MODULE := jnidemo

#生成的库的所用的头文件所在的目录

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include

#ndk编译c代码用到的一些宏定义

LOCAL_CFLAGS := -D_LINUX -D_ANDROID   

#ndk编译c++代码用到的一些宏定义

LOCAL_CPPFLAGS := -D_LINUX -D_ANDROID

#ndk编译当前目录下所有的c文件

MY_C_LIST += $(wildcard $(LOCAL_PATH)/*.c)

#ndk编译当前目录下所有的c++文件

MY_CPP_LIST += $(wildcard $(LOCAL_PATH)/*.cpp)

#所有的c、c++文件

LOCAL_SRC_FILES := $(MY_C_LIST:$(LOCAL_PATH)/%=%)

LOCAL_SRC_FILES +=  $(MY_CPP_LIST:$(LOCAL_PATH)/%=%)

#依赖的第三方库

LOCAL_SHARED_LIBRARIES :=  othermodule

#依赖的系统库

LOCAL_LDLIBS  := -landroid -pthread -llog -lz

#告诉Ndk编译成动态库

include $(BUILD_SHARED_LIBRARY)

#递归调用子目录的.mk

include $(call all-makefiles-under,$(LOCAL_PATH))

include $(call all-subdir-makefiles)

#用于在运行期检测目标设备的CPU家族和它支持的可选特性。

$(call import-module,cpufeatures)

一分钟学会Android.mk

5、5 、简单说明一下我的编译环境,主要是Ndk的c、c++编译环境的配置,我用的是MINGGW

一分钟学会Android.mk

一分钟学会Android.mk

一分钟学会Android.mk

  • Android SDK下载和安装以及环境变量配置
  • Mysql如何修改用户密码
  • 如何管理linux用户和用户组
  • 如何下载Ubuntu系统
  • 如何让QHBoxLayout拥有层次感
  • 热门搜索
    曹植是怎么死的 血稠怎么办 朋友的拼音怎么写 零钱明细怎么删除 怎么看mac地址 水煮鱼的鱼片怎么切 笔友用英语怎么说 卡尺怎么用 金毛怎么看纯不纯 蜀怎么读音