
Android中CMake的使用之一初步总结
如果你打算支持C++的异常和-frtti就勾选上。如果编译器想支持C++11,就在下拉框中选中C++11就好了。 这样一个自带本地开发的例程就自动全部建立好了。当然,如果你没有指定NDK的路径或者没有自动下载NDK,就会报一个错误,找不到NDK的路径,这时候,打开SDK的设置,在NDK里指定相关的路径即可,或者在下载里增加NDK的下载(这里是指定的)。 AS会自动生成一个native-lib.cpp: extern "C" JNIEXPORT jstring JNICALL Java_com_example_fjf_javacpp11_MainActivity_stringFromJNI( JNIEnv* env, jobject /* this */) { std::string value = PrintValue(10); std::string hello = "Hello from C++"; hello += value; return env->NewStringUTF(hello.c_str()); } 在相应的Java层上: // Example of a call to a native method TextView tv = (TextView) findViewById(R.id.sample_text); tv.setText(stringFromJNI()); public native String stringFromJNI(); // Used to load the 'native-lib' library on application startup. static { System.loadLibrary("test-lib"); System.loadLibrary("native-lib"); }
发布日期:2021-05-07 01:17:22
浏览次数:10
分类:技术文章
本文共 1519 字,大约阅读时间需要 5 分钟。
Android中CMake的使用之一初步总结 在Android studio2.2版本以,推出了新的不同于NDK编译链式的对Native本地C++/C开发的支持。这里进行一下初步的总结,后面会不断的进行完善,以更好的利用这个新的开发手段。 在早期的Android studio或者Eclipse开发Native的C++开发中,有两个比较难于实现的方面,一个是C++接口函数API的定义问题,主要包括相关的数据类型的对应和导出名称的修改,一般可以javah来动态生成或者后来使用JNI_OnLoad的方式来实现。第二个就是实际中经常遇到的非常实用的问题,如何在安卓层面上调试相关的C++代码。网上有好多的方法,但是相关的局限性和复杂度让人望而却步。 曾经将这个东西做为专门的讲座来向全公司进行普及学习,相关的开发人员都认为这个很有用,但使用起来还是不方便。以个人对IDE开发工具的发展历史来看,AS集成对本地C++代码的调试应该会很快。然后,在今天的查找相关资料时,突然发现了一些资料,这些资料有新有旧,从中看到了一些端倪,经过一上午的测试,跑通过了一个测试例程。这样就可以顺利的实现在AS上开发C++代码并调试的相关工作。不需要复杂的配置和下载相关的工具,幸福突然就降临了。 闲言少叙,回归正题。打开AS,创建一个工程,在工程,在新工程创建的界面,有下面对C++的支持,勾选 上:
下一个断点,然后调试发现可以音频从android层进入C++和函数里:(这里的C++代码和上层的代码有一些脱节,下面这个是重新生成了一个控制类来实现的,但不影响说明效果)
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月20日 08时46分01秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
焦点事件
2019-03-03
webpack打包常见报错
2019-03-03
web前端面试一从输入url到看到页面发生了什么
2019-03-03
智慧水利的泵站自动化监控系统解决方案
2019-03-03
C getopt.h
2019-03-03
CentOS下Nvidia docker 2.0之安裝教程&踩坑實錄
2019-03-03
H5页面授权获取微信授权(openId,微信nickname等信息)
2019-03-03
SpringBoot的URL是如何拼接的
2019-03-03
2018年年终总结
2019-03-03
解决checkbox未选中不传递value的多种方法
2019-03-03
【pgsql-参数详解1】PostgreSQL默认参数值
2019-03-03
HTTP协议(1)_入门的一些教程和资源
2019-03-03
钉钉登录及常用的URL及IP
2019-03-03
CENTOS 删除nginx
2019-03-03
【redis键过期删除策略】很高兴再次认识你
2019-03-03
【工具篇】EasyExcel的应用
2019-03-03
SSM发送手机验证码——以网建SMS为例
2019-03-03