NDK开发初探

最近项目需求少,学习一下NDK开发,下面是对NDK开发的初步探索,Android Studio版本3.0.1。

1.创建一个工程,记得要勾选Include C++ support,如图1所示:

图1

工程创建好后,在app线的build.gradle文件中可以看到有两处不同,如图2箭头所示:

图2

CMake是一款外部构建工具,可与 Gradle 搭配使用来构建原生库,用以取代ndk-build。更多内容请移至:向您的项目添加 C 和 C++ 代码

2.在src/main文件夹下多出一个cpp文件夹且文件夹下有有个native-lib.cpp文件,如图3所示,打开native-lib.cpp文件,如图4所示。

图3
图4

图4中的方法有改动,不是应用自动生成的模板,第一行中的extern "C" JNIEXPORT是默认的,jstring是函数的返回值,JNICALL也是默认。第二行是函数名,它的命名规范是以Java开头,其次com.bjhl.plugins.ndk.util是NativeUtil所在的包名,NativeUtil是Native所在方法的类名,最后stringFromJNI方法名,和Native方法名对应。NativeUtil类如图5所示:

图5
图6
图7
图8
图9

下面介绍一下GetMethodID方法的参数,如图9所示,GetMethodID方法有3个参数,第一个是要操作的jcalss对象,第二个是这个对象的构造方法,第3个参数代表的是构造方法中要传入的参数类型。详情请至JNI中java类型的简写 - hubingforever的日志 - 网易博客

项目源码:GitHub - xiaschina/NDKDemo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 向您的项目添加 C 和 C++ 代码 本文内容 下载 NDK 和构建工具 创建支持 C/C++ 的新项目 构建和运...
    会飞的大象_阅读 3,846评论 0 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,554评论 25 709
  • 七律/花菖蒲 作者:心博、图片:网络 黄鹂一对戏无声,和尚孤单自念经。 蝙蝠蹁跹落葶顶,玉蝉匍匐颤枝茎。 宿根挺水...
    心博1阅读 834评论 0 1
  • 想学习好,是有方法可循的!首先你要有明确的学习目标,然后分析自己达到目标需要哪些途径,再然后找出自己在按途径做时所...
    云淡风轻荷叶甜阅读 232评论 0 0
  • 第一天 计划:早:黑咖啡一杯 中:不吃 晚:红枣小米粥一份 vc气泡...
    减肥的猪jkun阅读 141评论 0 0