Android studio 中怎么使用C++编写的so库
时间: 2024-01-22 16:19:58 浏览: 95
在 Android Studio 中使用 C++ 编写的 so 库,需要先进行以下几个步骤:
1. 创建 C++ 代码文件,例如 `native-lib.cpp`。
2. 在 C++ 代码文件中,声明需要使用的函数,并实现这些函数。
例如:
```
#include <jni.h>
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());
}
```
3. 在 Android Studio 中创建 JNI 文件夹。
在 `app/src/main` 目录下创建一个名为 `jni` 的文件夹,并在其中创建一个名为 `Android.mk` 的文件和一个名为 `Application.mk` 的文件。
4. 在 `Android.mk` 文件中添加以下内容:
```
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := native-lib
LOCAL_SRC_FILES := native-lib.cpp
include $(BUILD_SHARED_LIBRARY)
```
5. 在 `Application.mk` 文件中添加以下内容:
```
APP_ABI := all
APP_STL := c++_shared
```
6. 在 `build.gradle` 文件中添加以下内容:
```
android {
// ...
defaultConfig {
// ...
externalNativeBuild {
cmake {
cppFlags "-std=c++11" // 添加 C++11 支持
arguments "-DANDROID_PLATFORM=android-23",
"-DANDROID_TOOLCHAIN=clang"
// 如果使用 ndk-build 则添加以下配置
/* arguments "-DANDROID_PLATFORM=android-23",
"-DANDROID_TOOLCHAIN=clang",
"-DANDROID_STL=c++_shared" */
}
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
// 如果使用 ndk-build 则添加以下配置
/* ndkBuild {
path "jni/Android.mk"
} */
}
}
```
7. 在 Java 中加载 so 库并调用其中的函数。
例如:
```
static {
System.loadLibrary("native-lib");
}
public native String stringFromJNI();
```
8. 编译并运行应用程序。
以上就是在 Android Studio 中使用 C++ 编写的 so 库的基本步骤。具体实现可以参考官方文档或相关教程。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)