分为几种情况: 新生成项目、已有项目添加新C++文件、已有项目添加已有C++文件
1. 新生成项目
在选择项目类型时, 选择Native C++:
则项目中会有一个空的Activity和一个CPP文件
2. 已有项目中加入新C++文件
分4步
2.1 添加C++源文件
Android视图中app上点右键, 选择 new->Folder->JNI Folder
cpp目录上点右键, 选择new ->C/C++ Source File, 输入名字(例如native-lib.cpp)后, 可输入cpp内容, 例如如下:
#include <jni.h> #include <string> extern "C" JNIEXPORT jstring JNICALL Java_com_d_myapplication_MainActivity_stringFromJNI( JNIEnv *env, jobject /* this */) { std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str()); }
2.2 添加CMake文件
在目录名cpp上点右键, New->File, 文件名为 CMakeLists.txt, 输入内容如下:
cmake_minimum_required(VERSION 3.4.1) add_library( # Sets the name of the library. native-lib # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). native-lib.cpp) find_library( # Sets the name of the path variable. log-lib # Specifies the name of the NDK library that # you want CMake to locate. log) target_link_libraries( # Specifies the target library. native-lib # Links the target library to the log library # included in the NDK. ${log-lib})
2.3 将C++关连的Gradle中
在app上点鼠标右键, 选择 Link C++ Project with Gradle, 在弹出的对话框中, 选择刚编辑的CMakeLists.txt文件
2.4 修改activity的java文件调用函数
Activity类的最开始, 加入
static { System.loadLibrary("native-lib"); }
最后, 加入Native C++的函数定义
public native String stringFromJNI();
C++文件如下:
#include <jni.h> #include <string> extern "C" JNIEXPORT jstring JNICALL Java_com_d_myapplication_MainActivity_stringFromJNI( JNIEnv* env, jobject /* this */) { std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str()); }
3. 已有项目添加已有C++文件
同2, 新建JNI文件夹, 然后将所有的C++文件拷贝到此文件夹中, 然后如2.3建立关联, 最后如2.4修改java文件进行调用
参见 https://developer.android.com/studio/projects/add-native-code#link-gradle