继上篇文章《Android Studio中NDK开发傻瓜教程(JNI)》之后,本篇介绍CMake技术在Android Studio中的NDK开发。

源码地址:

Step1:新建项目,命名为NDKDemo002,记得勾选“Include C++ support”

Step2:一路点击“Next”,最终点击“Finish”完成新项目的创建

Step3:默认项目会自动生成一个cpp文件夹,在main下,该目录存放C相关的文件,项目本身是可以运行NDK的,感兴趣的大家可以直接运行试一下。我们本次教程不使用默认的native-lib.cpp,所以我们后边会删除掉他。原来的项目结构如下:

Step4:创建类包“cpp”,并在该包中创建文件”HelloNDK”,内容与结构如下:

Step5:build项目

Step6:build完成后app/build/intermediates/classes/debug中结构如下:

Step7:通过Android Studio 自带的Terminal定位到文件夹app/build/intermediates/classes/debug,如下:

Step8:使用指令,生成c语言头文件。指令:javah -jni com.zyl.ndkdemo002.cpp.HelloNDK,目标头文件在app/build/intermediates/classes/debug下,文件名为“com.zyl.ndkdemo002.cpp.HelloNDK.h”,如果看不到请刷新下项目。示例如下:

”com.zyl.ndkdemo002.cpp.HelloNDK.h“内容如下:

Step9:把“com.zyl.ndkdemo002.cpp.HelloNDK.h”剪切到src/main/cpp中:

Step10:在“src/main/cpp”目录中新建c source文件“com.zyl.ndkdemo002.cpp.HelloNDK.c”,内容如下:

Step11:配置app目录下的build.gradle文件,在defaultConfig标签中将externalNativeBuild修改为以下内容:

externalNativeBuild {

cmake {

cppFlags ""

// 指定只用clang编译器

// clang是一个C语言、Objective-C、C++语言的轻量级编译器

arguments "-DANDROID_TOOLCHAIN=clang"

// 生成.so库的目标平台

abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64", "mips", "mips64"

}

}

Step12:修改“CMakeLists.txt”文件,将配置的“native-lib”修改为“hellondk”,并配置“com_zyl_ndkdemo002_cpp_HelloNDK.c”

的注入路径,修改后内容如下:

Step13:“make project”

Step14:生成的动态链接库文件在项目中的结构如下:

Step15:把该lib下的所有为文件拷贝到,app下的libs中,删除掉先前提到 的无用的“native-lib.cpp”,并从MainActivity中删除相关代码

Step16:激动人心的时刻到了,测试,如果能够弹出“this is a android ndk hello.”,恭喜你,你成功了。代码如下:

android studio umake,Android Studio中NDK开发傻瓜教程(CMake)相关推荐

  1. Android studio中NDK开发(四)——使用addr2line分析Crash日志 backtrace

    文章目录 一.前言 二.分析 1.先提取backtrace部分 2.提取对应so库的信息 3.提取错误地址 三.使用addr2line对地址进行转换 1.addr2line工具的路径放在 2.Term ...

  2. OpenCV4Android中NDK开发(二)---图片转为灰度图

    前言 上一篇文章已经介绍了OpenCV的环境配置<OpenCV4Android中NDK开发(一)--- OpenCV4.1.0环境搭建>,今天这篇我们就来直接进行实战,先做最简单的传入图像 ...

  3. Android开发中NDK开发的作用

    NDK开发,主要目: 1.将java中性能较差的代码放到C或C++中执行,提高效率. 2.将保密算法或信息代码放入C或C++文件中,打包为so动态库,这样难以破解. 3.部分验证信息可以放到C或C++ ...

  4. android 获取控件高度_安卓开发入门教程UI控件_ImageView

    什么是ImageView ImageView是用于显示图片的UI控件. 基础样例 1.展示本地图片 效果图 代码 <ImageViewandroid:layout_width="wra ...

  5. android 获取控件高度_安卓开发入门教程UI控件_ProgressBar

    什么是ProgressBar ProgressBar是用于提示用户进行等待的UI控件,. 基础样例 1.loading图 效果图 代码 布局文件代码 <ProgressBarandroid:id ...

  6. 苹果android wear教程,Android Wear/Apple Watch/WatchKit智能手表开发入门教程

    Android Wear/DuWear/TicWear/TOS/YunOS For Wear Apple Watch/Watch OS/WatchKit 智能手表开发者服务平台OpenWatch SD ...

  7. 一步一步学会NDK开发2-利用CMake编译生成so库

    从上篇文章中,大家按操作勾选了support C++后,应该可以发现,项目中会多了个cpp文件夹,里面有.cpp文件,还有个CMakeLists.txt,这个CMakeLists.txt就是cmake ...

  8. OpenCV android sdk配置OpenCV android NDK开发实例

    OpenCV android sdk配置OpenCV android NDK开发实例 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/det ...

  9. Android NDK开发一 NDK环境搭建及cmake简介

    1 前言 关于NDK的介绍可以查看官方的介绍: https://developer.android.com/ndk/guides/index.html 一句话总结NDK:NDK(Native Deve ...

  10. Android NDK开发之旅(2):一篇文章搞定Android Studio中使用CMake进行NDK/JNI开发

    Android NDK开发之旅(2):一篇文章搞定android Studio中使用CMake进行NDK/JNI开发 (码字不易,转载请声明出处:http://blog.csdn.NET/andrex ...

最新文章

  1. 【Qt】Log4Qt(三)源码分析
  2. 基于第三方开源库的OPC服务器开发指南(2)——LightOPC的编译及部署
  3. 安装setuptools的UnicodeDecodeError
  4. java编写地铁购票系统_Java_地铁购票系统
  5. 24.volatile关键字的作用、volatile原理、可见性、内存屏障、volatile性能、transient
  6. YOLOV3目标检测模型训练实例
  7. 《深入理解 Spring Cloud 与微服务构建》第十一章 服务网关
  8. 洛谷 P3375 【模板】KMP字符串匹配
  9. 解决:Conversion to Dalvik format failed: Unable to execute dex: null
  10. STL中的关联式容器——set(集合)
  11. mod sim tcp配置_ModSim32-ModScan32Modbus调试工具使用及配置说明.pdf
  12. js控制的回到顶端goTop的使用
  13. [整理] 如何学习插画,美术等
  14. 狐友老欧头疼了一天,VFP转换成JSON格式总不对,竟是乱码惹的祸
  15. ORA-02396:超出最大空闲时间,请重新连接
  16. 编写Java程序,使用ThreadLocal类,项目中创建账户类 Account,类中包括账户名称name、 ThreadLocal 类的引用变量amount,表示存款
  17. crypto buuctf rabbit
  18. 发布坐标转换软件OpenCoord的使用第二集-椭球转换
  19. 机器学习PAI实现精细化营销
  20. 智慧校园管理系统开发

热门文章

  1. git使用kdiff3合并乱码问题
  2. 显色指数(CRI)计算软件-升级版可视化界面
  3. Office - Excel如何查询重复值数量
  4. html输入框只能输入整数,轻松让INPUT框只能输入整数
  5. kettle同步数据 (SAP hana到 Mysql)
  6. ong拼音汉字_汉语拼音ong的发音方法
  7. ANTLR中文手册之三(ANTLR 元语言-元语言词汇表)
  8. Excel技巧—几个快速填充公式更高效的小技巧
  9. 04 CoCos Creator-Please make sure java is installed and JAVA_HOME
  10. 阿里云服务器linux 启动网卡失败,提示does not seem to be present,delaying initialization