android studio umake,Android Studio中NDK开发傻瓜教程(CMake)
继上篇文章《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)相关推荐
- Android studio中NDK开发(四)——使用addr2line分析Crash日志 backtrace
文章目录 一.前言 二.分析 1.先提取backtrace部分 2.提取对应so库的信息 3.提取错误地址 三.使用addr2line对地址进行转换 1.addr2line工具的路径放在 2.Term ...
- OpenCV4Android中NDK开发(二)---图片转为灰度图
前言 上一篇文章已经介绍了OpenCV的环境配置<OpenCV4Android中NDK开发(一)--- OpenCV4.1.0环境搭建>,今天这篇我们就来直接进行实战,先做最简单的传入图像 ...
- Android开发中NDK开发的作用
NDK开发,主要目: 1.将java中性能较差的代码放到C或C++中执行,提高效率. 2.将保密算法或信息代码放入C或C++文件中,打包为so动态库,这样难以破解. 3.部分验证信息可以放到C或C++ ...
- android 获取控件高度_安卓开发入门教程UI控件_ImageView
什么是ImageView ImageView是用于显示图片的UI控件. 基础样例 1.展示本地图片 效果图 代码 <ImageViewandroid:layout_width="wra ...
- android 获取控件高度_安卓开发入门教程UI控件_ProgressBar
什么是ProgressBar ProgressBar是用于提示用户进行等待的UI控件,. 基础样例 1.loading图 效果图 代码 布局文件代码 <ProgressBarandroid:id ...
- 苹果android wear教程,Android Wear/Apple Watch/WatchKit智能手表开发入门教程
Android Wear/DuWear/TicWear/TOS/YunOS For Wear Apple Watch/Watch OS/WatchKit 智能手表开发者服务平台OpenWatch SD ...
- 一步一步学会NDK开发2-利用CMake编译生成so库
从上篇文章中,大家按操作勾选了support C++后,应该可以发现,项目中会多了个cpp文件夹,里面有.cpp文件,还有个CMakeLists.txt,这个CMakeLists.txt就是cmake ...
- OpenCV android sdk配置OpenCV android NDK开发实例
OpenCV android sdk配置OpenCV android NDK开发实例 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/det ...
- Android NDK开发一 NDK环境搭建及cmake简介
1 前言 关于NDK的介绍可以查看官方的介绍: https://developer.android.com/ndk/guides/index.html 一句话总结NDK:NDK(Native Deve ...
- Android NDK开发之旅(2):一篇文章搞定Android Studio中使用CMake进行NDK/JNI开发
Android NDK开发之旅(2):一篇文章搞定android Studio中使用CMake进行NDK/JNI开发 (码字不易,转载请声明出处:http://blog.csdn.NET/andrex ...
最新文章
- 【Qt】Log4Qt(三)源码分析
- 基于第三方开源库的OPC服务器开发指南(2)——LightOPC的编译及部署
- 安装setuptools的UnicodeDecodeError
- java编写地铁购票系统_Java_地铁购票系统
- 24.volatile关键字的作用、volatile原理、可见性、内存屏障、volatile性能、transient
- YOLOV3目标检测模型训练实例
- 《深入理解 Spring Cloud 与微服务构建》第十一章 服务网关
- 洛谷 P3375 【模板】KMP字符串匹配
- 解决:Conversion to Dalvik format failed: Unable to execute dex: null
- STL中的关联式容器——set(集合)
- mod sim tcp配置_ModSim32-ModScan32Modbus调试工具使用及配置说明.pdf
- js控制的回到顶端goTop的使用
- [整理] 如何学习插画,美术等
- 狐友老欧头疼了一天,VFP转换成JSON格式总不对,竟是乱码惹的祸
- ORA-02396:超出最大空闲时间,请重新连接
- 编写Java程序,使用ThreadLocal类,项目中创建账户类 Account,类中包括账户名称name、 ThreadLocal 类的引用变量amount,表示存款
- crypto buuctf rabbit
- 发布坐标转换软件OpenCoord的使用第二集-椭球转换
- 机器学习PAI实现精细化营销
- 智慧校园管理系统开发
热门文章
- git使用kdiff3合并乱码问题
- 显色指数(CRI)计算软件-升级版可视化界面
- Office - Excel如何查询重复值数量
- html输入框只能输入整数,轻松让INPUT框只能输入整数
- kettle同步数据 (SAP hana到 Mysql)
- ong拼音汉字_汉语拼音ong的发音方法
- ANTLR中文手册之三(ANTLR 元语言-元语言词汇表)
- Excel技巧—几个快速填充公式更高效的小技巧
- 04 CoCos Creator-Please make sure java is installed and JAVA_HOME
- 阿里云服务器linux 启动网卡失败,提示does not seem to be present,delaying initialization