Android 使用 C++ 生成 SO 文件并封装成 SDK 示例
要将 C++ 代码生成 SO 文件并与 Java 代码封装成一个 SDK 示例,可以按照以下步骤进行操作:
- 编写 C++ 代码文件(例如 example.cpp)。
- 使用 CMake 或 ndk-build 等工具编译生成 SO 文件。
- 使用 CMake 的方法:
-
在项目根目录下创建 CMakeLists.txt 文件。
-
在 CMakeLists.txt 文件中添加以下内容:
-
- 使用 CMake 的方法:
cmake_minimum_required(VERSION 3.4.1)
# 添加 C++ 源文件
add_library( native-lib SHARED src/main/cpp/example.cpp )
# 链接外部库,如果需要的话
target_link_libraries( native-lib log ) ```
- 在终端中执行以下命令编译生成 SO 文件:
```shell
cd /path/to/project
mkdir build
cd build
cmake ..
make
```
- 编译成功后,在 build 目录下会生成 libnative-lib.so 文件。
- 使用 ndk-build 的方法:
-
在项目根目录下创建 Android.mk 文件。
-
在 Android.mk 文件中添加以下内容:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # 添加 C++ 源文件 LOCAL_SRC_FILES := src/main/cpp/example.cpp # 链接外部库,如果需要的话 LOCAL_LDLIBS := -llog # 生成的 SO 文件名 LOCAL_MODULE := native-lib include $(BUILD_SHARED_LIBRARY) -
在终端中执行以下命令编译生成 SO 文件:
cd /path/to/project ndk-build -
编译成功后,在 libs 目录下会生成 libnative-lib.so 文件。
-
-
在 Java 代码中加载 SO 文件并调用其中的方法。
-
在 Java 类中声明 native 方法,例如:
public class NativeLib { public native void nativeMethod(); } -
在 Java 类中加载 SO 文件,例如:
public class MainActivity extends AppCompatActivity { static { System.loadLibrary('native-lib'); } // 其他代码 public static void main(String[] args) { NativeLib nativeLib = new NativeLib(); nativeLib.nativeMethod(); } }
-
-
将生成的 SO 文件复制到 Android 项目的 jniLibs 目录下。
- 在 app 模块的 src/main 下创建 jniLibs 目录。
- 将生成的 SO 文件(libnative-lib.so)复制到 jniLibs 目录下。
-
在 AndroidManifest.xml 文件中添加相应的权限(如果需要的话)。
-
在 build.gradle 文件中添加对 ndk 支持的配置(如果需要的话)。
-
在 Android Studio 中运行项目,即可使用 C++ 代码封装的 SDK 示例。
请注意,上述步骤是一种常见的方法,具体操作可能会因项目结构和工具版本而有所不同。
原文地址: https://www.cveoy.top/t/topic/qrjy 著作权归作者所有。请勿转载和采集!