Android studio 利用cmake编译和使用so文件

在Android Studio中使用CMake编译和使用.so文件,你需要执行以下步骤:

1.在CMakeLists.txt文件中指定你的.so文件。

2.在build.gradle文件中配置CMake构建脚本。

3.同步项目,让Gradle和CMake生成相应的Native库。

以下是一个简单的例子:

步骤1: 创建CMakeLists.txt

在你的项目的CMakeLists.txt文件中,添加你的.so文件。假设你的.so文件名为libexample.so,位于src/main/jniLibs/armeabi-v7a/目录下:

cmake_minimum_required(VERSION 3.4.1)

add_library( lib_example SHARED IMPORTED )

set_target_properties( lib_example

PROPERTIES IMPORTED_LOCATION

${CMAKE_SOURCE_DIR}/src/main/jniLibs/armeabi-v7a/libexample.so )

add_executable( your_app_name main.cpp )

target_link_libraries( your_app_name

lib_example )

步骤2: 配置build.gradle

在你的build.gradle文件中,确保你有以下配置:

android {

...

defaultConfig {

...

ndk {

// Specifies the ABI configurations of your native

// libraries Gradle should build and package with your APK.

abiFilters 'armeabi-v7a', 'x86'

}

}

externalNativeBuild {

cmake {

path "CMakeLists.txt"

}

}

...

}

dependencies {

...

}

tasks.withType(JavaCompile) {

compileTask -> compileTask.dependsOn 'ndkBuild'

}

tasks.withType(JavaCompile) {

compileTask -> compileTask.dependsOn 'ndkBuild'

}

task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') {

commandLine "$projectDir/../ndk-build",

'-C', file('src/main').absolutePath,

'all', 'NDK_DEBUG=1'

}

步骤3: 同步项目

在Android Studio中,点击Tools -> Android -> Sync Project with Gradle Files,让Gradle和CMake根据你的配置生成相应的构建文件和库文件。

完成这些步骤后,CMake会编译你的.so文件,并且在应用构建过程中将其打包到APK中。在Java代码中,你可以使用System.loadLibrary("example")来加载这个.so文件。

相关推荐
汽车芯猿3 分钟前
Visual Studio 2015 完整安装与问题解决指南(含证书配置、包丢失修复及工程加载失败处理)
ide·visual studio
golang学习记12 分钟前
IDEA 2026.1:这些 核心功能免费开放!
java·ide·intellij-idea
鹏程十八少1 小时前
7. Android Shadow插件化原理深挖(下):Transform字节码插桩与“零Hook”的底层实现与宿主通信全流程
android·前端·面试
lierenvip1 小时前
mysql的主从配置
android·mysql·adb
火山上的企鹅2 小时前
QGC二次开发本地媒体浏览实战(一)Qt5+DirectShow 在 Android正常_Windows为什么出问题
android·qt·媒体·qgc
charlie1145141912 小时前
通用GUI编程技术——Win32 原生编程实战(十八)——GDI 设备上下文(HDC)完全指南
开发语言·c++·ide·学习·visual studio·win32
肖恭伟2 小时前
Cursor(VSCode) + clangd 无法跳转 Qt 类/变量
ide·vscode·qt
2501_915918412 小时前
iOS App 拿不到数据怎么办?数据解密导出到分析结构方法
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_916008892 小时前
iOS App 抓包看不到内容,从有请求没数据一步步排查
android·ios·小程序·https·uni-app·iphone·webview
幸福在路上wellbeing2 小时前
Kotlin 核心学习大纲(Android 开发)
android·学习·kotlin