当前位置: 代码迷 >> 综合 >> 【android studio】添加C/C++支持的两种方式(cmake)
  详细解决方案

【android studio】添加C/C++支持的两种方式(cmake)

热度:22   发布时间:2023-11-14 21:06:51.0

文章目录

  • 1、创建项目时添加
  • 2、创建完普通项目再添加支持
    • 设置app/build.gradle
    • 创建CMakeLists.txt
    • gradle sync build同步

1、创建项目时添加

首先在AndroidStudio初始界面Start a new project
在这里插入图片描述
接着直接点击 Native C++
在这里插入图片描述
之后可以设置C++的标准,我们选择Default在这里插入图片描述

在/app/src/main/cpp下是自动生成的native-lib.cpp,在这里实现native方法

2、创建完普通项目再添加支持

如果嫌它总是会自动生成一些不是想要的东西(native-lib.cpp),你还得自己删除,显得累赘
于是我们着手自己添加C/C++支持
一样,点击普通项目生成
在这里插入图片描述
这是项目结构
在这里插入图片描述

设置app/build.gradle

打开app下的build.gradle

defaultConfig{}里添加

externalNativeBuild{cmake{cppFlags ""//这里选择cpp设置 //如果要添加C++11支持就是 cppFlags "-std=c++11"}
}

android{}里添加

externalNativeBuild{cmake{path "CMakeLists.txt"//相对于build.gradle的路径,如果是同一个目录,直接写"CMakeLists.txt"(完全一致),如果在当前目录xxx下//则为"xxx/CMakeLists.txt"}
}

在这里插入图片描述

创建CMakeLists.txt

和刚才说的一样,创建的位置要和path里写的一致
我选择创建在app下

在这里插入图片描述
注意 log和库不要写反,是把log链接到libMyLib(因为自己的类是SHARED本身并不包含log的实现)
用add_library创建自己的库,第一行名称,第二行类型,第三行是相对路径(可以随便写,要保持一致)
target_link_libraries是链接log库与我的库到程序中
具体可以看 cmake学习笔记之add_library、target_link_libraries和link_directories

gradle sync build同步

在这里插入图片描述
每次修改配置文件都会出现这个提示,点击Sync Now就可以了
再看项目目录,蓝色文件夹(如java)表示已添加进项目
在这里插入图片描述
可是cpp文件夹还是灰的怎么办
别急,点击菜单栏,按顺序执行
1、Build->Rebuild-> Rebuild Projects
2、Build->Rebuild-> Linked C++ Projects

可以看到cpp已经变蓝了
在这里插入图片描述
试着在MainActivity中添加本地方法并在main.cpp里添加一个实现
这里是布局文件
在这里插入图片描述
主类
在这里插入图片描述
cpp文件
在这里插入图片描述
一个简单的实现10以内随机数的实例

这是摔坑好几次总结出来的

  相关解决方案