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.txt
或 Android.mk
文件
你需要为你的 C++ 代码配置构建文件,以便 NDK 可以编译它们。
使用 CMake
:
在项目的 app
目录下创建或编辑 CMakeLists.txt
文件:
cmakecmake_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.mk
和 Application.mk
:
在 src/main/jni
目录下创建 Android.mk
文件:
makefileLOCAL_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
文件(如果需要):
makefileAPP_ABI := all
4. 配置 build.gradle
文件
在 app/build.gradle
文件中配置 CMake 或 ndk-build 以便构建 C++ 代码:
groovyandroid { // 其他配置... 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
javapackage 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.txt
或Android.mk
配置编译。 - 配置
build.gradle
:设置构建配置。 - 调用本地方法:在 Java/Kotlin 代码中加载库并调用方法。
- 运行和调试:确保应用程序正常运行,调试 C++ 代码。
关键字
Android NDK, C++, native.cpp
, native.h
, CMakeLists.txt
, Android.mk
, build.gradle
, 本地方法, System.loadLibrary
, Java 调用, C++ 调试