Android NDK 编译两个 .so 文件:a.so 调用 b.so 示例
Android NDK 编译两个 .so 文件:a.so 调用 b.so 示例
本文介绍如何在 Android NDK 中编译两个 .so 文件,其中 a.so 调用 b.so,并提供一个示例,展示如何编写 Android.mk 文件、创建 C 文件以及在项目中包含 jni 目录。
1. 编写 Android.mk 文件
Android.mk 文件用于编写 Android NDK 的构建脚本,用于指定编译链接的规则和库文件。
首先,创建一个名为 jni 的文件夹,并在该文件夹中创建一个名为 Android.mk 的文件,用于放置编译脚本。
在 Android.mk 文件中,添加以下内容:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# 编译 a.so
LOCAL_MODULE := a
LOCAL_SRC_FILES := a.c
LOCAL_SHARED_LIBRARIES := b
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
# 编译 b.so
LOCAL_MODULE := b
LOCAL_SRC_FILES := b.c
include $(BUILD_SHARED_LIBRARY)
2. 创建 C 文件
在 jni 目录下,创建 a.c 和 b.c 文件,并分别实现 a.so 和 b.so 的功能。例如,a.c 文件可以调用 b.so 并返回 'hello'。
3. 包含 jni 目录
在项目根目录下的 build.gradle 文件中,添加以下内容,以将 jni 目录包含到编译中:
android {
...
sourceSets {
main {
jni.srcDirs = ['jni']
}
}
...
}
4. 编译
在终端中运行 ndk-build 命令,进行编译。
编译完成后,你将在项目的 libs 目录下找到生成的 a.so 和 b.so 文件。
注意事项
- 上述示例假设你的项目结构如下:
- app (项目根目录)
- jni
- Android.mk
- a.c
- b.c
- build.gradle
- 如果你的项目结构或需求有所不同,你需要根据实际情况进行相应的修改。
原文地址: https://www.cveoy.top/t/topic/Nfc 著作权归作者所有。请勿转载和采集!