如何在现有的 Android Studio 工程中添加 C++ 代码

问题的引入

创建了一个 Android Studio 工程,在实现了许多功能后,需要在当前的工程中调用一些 C++ 代码,在网上查了一些资料,发现,都是在创建 Android Studio 工程时,就加入 C++ 支持,我不想重新创建带 C++ 支持的 Android Studio 工程,因为有些工作需要在新工程中重复做,很麻烦,于是,就想直接在当前 Android Studio 工程添加 C++ 代码。

实现方法简述

我采用的这种方法:创建了一个 Android Studio 工程,选用 “Empty Activity”,再创建了一个 Android Studio 工程,选用 “Native C++” ,然后对比了两个工程的文件差异,从这些差异中,找到了方法。

具体步骤

下面详述添加方法。我的环境是:win10,Android Studio 版本如下:
在这里插入图片描述

假设已经有了一个 Android Studio 工程(我这里是 javatest2),在创建它时,并不是 “Native C++”,现在需要在其中加入 “C++” 代码。

1 创建 cpp 文件夹

在 app/src/main 文件夹下(如下图所示),创建 cpp 文件夹,当然也可以是其他名字,比如 cxx,这个可以随意。
在这里插入图片描述
创建好后如下图所示:
在这里插入图片描述

2 在 cpp 文件夹下创建其他文件

在 cpp 中创建 inc 和 src 文件夹,以及 CMakeLists.txt,inc 用于存放 C++ 头文件,src 用于存放 C++ 源文件,这两个文件夹也不是必须的,只是我喜欢这样分类存放,CMakeLists.txt 是必须的,它用于指示如何编译 C++ 源文件。创建好后,如下图所示&

### 如何在 Android Studio 中配置和运行 C++ 项目 #### 添加 C++ 支持到现有项目 对于已经在使用的 Android Studio 工程,如果希望集成 C++ 功能而不想重建整个工程,则可以通过修改 `build.gradle` 文件来实现这一目标。具体来说,在模块级别的 `build.gradle` 文件内添加如下设置: ```gradle android { ... defaultConfig { ... externalNativeBuild { cmake { cppFlags "" } } } externalNativeBuild { cmake { path "CMakeLists.txt" } } } ``` 此操作允许开发者引入外部原生构建工具(如 CMake),并指定其配置文件的位置[^1]。 #### 创建 C++ 源码目录结构 接着应当建立合适的源代码组织方式。通常情况下,建议将所有的 C++ 文件放置于 `src/main/cpp/` 下面,并在此处编写必要的头文件以及实现文件。同时还需要创建一个名为 `CMakeLists.txt` 的文本文件用于定义编译指令集,它位于项目的根目录下或是放在上述提到的cpp文件夹里。 #### 编写简单的 C++ 函数并与 Java 绑定 为了验证环境搭建是否成功,可以先尝试开发一个小例子——比如计算两个整数相加的结果并通过 JNI (Java Native Interface) 返回给 Java 层处理。下面是一个基本的例子展示如何完成这样的任务: ```cpp // native-lib.cpp #include <jni.h> #include <string> extern "C" JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_stringFromJNI( JNIEnv* env, jobject /* this */) { std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str()); } JNIEXPORT jint JNICALL Java_com_example_myapplication_MainActivity_add(JNIEnv *env, jclass type, jint a, jint b){ return a+b; } ``` 这段代码展示了怎样通过 JNI 接口暴露两个函数供 Java 使用:一个是返回字符串消息;另一个则是执行简单算术运算的功能[^3]。 #### 配置 NDK 和 SDK 版本兼容性 确保所使用的 NDK 版本与应用程序的目标 API 级别相互匹配非常重要。可以在 `build.gradle` 文件中的 `defaultConfig` 块中调整最小 SDK 版本(`minSdkVersion`)和其他相关属性以适应不同设备的需求。此外,也可以利用 Gradle 插件提供的 `ndkBlock` 来进一步定制化 NDK 设置。 #### 构建与调试 一旦完成了以上准备工作之后就可以点击 Build -> Make Project 或者直接按下 Shift+F9 键来进行增量式的编译过程。如果有任何错误发生,请仔细阅读日志信息以便快速定位问题所在之处。当一切顺利完成后,便能够像平常那样启动模拟器或连接真实手机进行测试了。值得注意的是,Android Studio 提供了一系列针对 C/C++ 开发者的强大调试特性,例如断点、单步执行等功能都可以帮助提高工作效率[^2]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值