Android中调用外部的.cpp和.h文件

在 Android 开发中,调用外部的 .cpp.h 文件通常涉及到使用 Android NDK(Native Development Kit)。Android NDK 允许开发者在应用中使用 C 和 C++ 代码,与 Java 或 Kotlin 代码进行交互。以下是详细的步骤和示例,介绍如何在 Android 项目中调用外部的 .cpp.h 文件。

1. 安装和配置 Android NDK

确保已经安装 Android NDK。可以通过 Android Studio 的 SDK Manager 安装 NDK。

2. 创建 C++ 文件

假设我们有一个 C++ 文件 native.cpp 和一个头文件 native.h。这两个文件包含我们要调用的 C++ 代码。

示例:native.h

cpp
#ifndef NATIVE_H #define NATIVE_H #ifdef __cplusplus extern "C" { #endif // 声明一个示例函数 void nativeFunction(); #ifdef __cplusplus } #endif #endif // NATIVE_H

示例:native.cpp

cpp
#include "native.h" #include <iostream> void nativeFunction() { std::cout << "Hello from native code!" << std::endl; }

3. 配置 CMakeLists.txtAndroid.mk 文件

你需要为你的 C++ 代码配置构建文件,以便 NDK 可以编译它们。

使用 CMake

在项目的 app 目录下创建或编辑 CMakeLists.txt 文件:

cmake
cmake_minimum_required(VERSION 3.4.1) # 添加本地 C++ 库 add_library( native-lib SHARED src/main/cpp/native.cpp ) # 查找和链接 OpenGL ES 库(如果需要) find_library( log-lib log ) # 将本地库链接到 log 库 target_link_libraries( native-lib ${log-lib} )

使用 Android.mkApplication.mk

src/main/jni 目录下创建 Android.mk 文件:

makefile
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := native-lib LOCAL_SRC_FILES := native.cpp include $(BUILD_SHARED_LIBRARY)

src/main/jni 目录下创建 Application.mk 文件(如果需要):

makefile
APP_ABI := all

4. 配置 build.gradle 文件

app/build.gradle 文件中配置 CMake 或 ndk-build 以便构建 C++ 代码:

groovy
android { // 其他配置... externalNativeBuild { cmake { path "src/main/cpp/CMakeLists.txt" } // 如果使用 ndk-build // ndkBuild { // path "src/main/jni/Android.mk" // } } // 添加 NDK 支持 ndkVersion "21.3.6528147" // 根据实际情况设置 }

5. 在 Java 或 Kotlin 代码中调用本地方法

通过 Native 关键字和 System.loadLibrary 方法来加载本地库,并调用本地方法。

示例:MainActivity.java

java
package com.example.myapp; import android.os.Bundle; import android.app.Activity; public class MainActivity extends Activity { // 声明本地方法 static { System.loadLibrary("native-lib"); } public native void nativeFunction(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 调用本地方法 nativeFunction(); } }

6. 运行和调试

构建和运行你的 Android 应用程序。确保本地库已正确编译并加载。如果有错误,检查 C++ 代码、构建配置和 Java 调用是否正确。

7. 调试 C++ 代码

可以使用 Android Studio 的 C++ 调试工具来调试你的 C++ 代码。设置调试配置,运行应用并设置断点以调试。

总结

  • 创建 C++ 文件:编写 .cpp.h 文件。
  • 配置构建文件:使用 CMakeLists.txtAndroid.mk 配置编译。
  • 配置 build.gradle:设置构建配置。
  • 调用本地方法:在 Java/Kotlin 代码中加载库并调用方法。
  • 运行和调试:确保应用程序正常运行,调试 C++ 代码。

关键字

Android NDK, C++, native.cpp, native.h, CMakeLists.txt, Android.mk, build.gradle, 本地方法, System.loadLibrary, Java 调用, C++ 调试