[android developer学习笔记]Android mk

本文介绍了在使用JNI进行Android开发时如何通过android.mk文件来描述C/C++源码,并将其编译为动态库。详细解释了android.mk文件中的关键配置项,包括LOCAL_PATH、CLEAR_VARS、LOCAL_MODULE、LOCAL_SRC_FILES及BUILD_SHARED_LIBRARY。

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

一 、概念

        用到jni的时候,就需要android.mk文件,它通常位于project/jni/android.mk。anddroid.mk是用来想Android NDK描述C/C++源码,它把源码分成模块(module)编译,编译的结果是动态库、静态库或可执行文件。只有动态库可以打包到应用中。静态库可以应用到动态库中。

二、简单例子

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:= helloworld

LOCAL_SRC_FILES := helloworld.c

include $(BUILD_SHARED_LIBRARY)

第一行:LOCAL_PATH := $(call my-dir)

定义源码的路径。my-dir是一个宏函数,调用语法就是$(call <function>) function 是NDK提供的宏函数。更多宏函数参考developer的文档。

第二行:include $(CLEAR_VARS)

清除LOCAL变量,除了LOCAL_PATH。CLEAR_VARS是一个NDK定义的变量,它指向一个清除LOCAL变量的脚本。调用语法是include $(<variable>)。更多的NDK定义的变量参考developer文档。

第三行:LOCAL_MODULE:= helloworld

标识你定义的模块(module)。如上面的例子,它将会生成一个libhelloworld.so的动态库。LOCAL开通的一般都是描述模块的变量,在include $(CLEAR_VARS)之后所有LOCAL变量被重新初始化,之后才能对LOCAL变量进行赋值。更多LOCAL变量参考developer文档。

第四行:LOCAL_SRC_FILES := helloworld.c

定义源文件。多个文件用空格分离。文件路径是相对LOCAL_PATH的。

第五行:include $(BUILD_SHARED_LIBRARY)

编译成动态库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值