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
  • 如果你的项目结构或需求有所不同,你需要根据实际情况进行相应的修改。
Android NDK 编译两个 .so 文件:a.so 调用 b.so 示例

原文地址: https://www.cveoy.top/t/topic/Nfc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录