android ndk通过jni调用C++
2017-01-19 15:25
162 查看
1.开发工具:AndroidStudio2.2+ndk插件
①在AndroidStudio上创建一个Android项目如下图
![](http://img.blog.csdn.net/20170119150116855?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQ3OTMyMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
将include c++ Suport勾选上然后点击next直到finish创建项目项目目录如下
![](http://static.open-open.com/lib/uploadImg/20160930/20160930154017_112.jpg)
Tips: 图中红色方框选中的区域为 NDK 的东东
(a). externalNativeBuild ---> cmake 编译好的文件, 显示支持的各种硬件等信息
(b). cpp ---> C 语言程序的逻辑部分, native-lib.cpp 文件名可自行修改
(c). CMakeLists.txt ---> CMake 脚本配置的文件。
![](http://static.open-open.com/lib/uploadImg/20160930/20160930154017_459.jpg)
![](http://static.open-open.com/lib/uploadImg/20160930/20160930154018_297.jpg)
注意:
红色方框中三块即可实现调用 NDK 来实现功能
(a). 使用 native 来定义 NDK 的方法:public native ***
(b). 使用 static 语块来引入 so 文件
(c). 调用时,只需要调用定义的 native 的方法即可
![](http://static.open-open.com/lib/uploadImg/20160930/20160930154019_497.jpg)
08
Tips: 方法名的命名根之前方法一样,java_包名_类名_方法名
![](http://static.open-open.com/lib/uploadImg/20160930/20160930154019_731.jpg)
09
Tips: 红色方框部分的名称可以同时更改, 注意两者需要一致, 更改名称后 会在 .externalNativeBuild 目录下生成相应的 so 的名称,Android 部分调用时 static 语块中 引入的 so 文件名也要保持一致
![](http://static.open-open.com/lib/uploadImg/20160930/20160930154020_484.png)
这样一个简单NDK demo就完成了。
①在AndroidStudio上创建一个Android项目如下图
将include c++ Suport勾选上然后点击next直到finish创建项目项目目录如下
编译好的项目一览
![](http://static.open-open.com/lib/uploadImg/20160930/20160930154017_112.jpg)
Tips: 图中红色方框选中的区域为 NDK 的东东
(a). externalNativeBuild ---> cmake 编译好的文件, 显示支持的各种硬件等信息
(b). cpp ---> C 语言程序的逻辑部分, native-lib.cpp 文件名可自行修改
(c). CMakeLists.txt ---> CMake 脚本配置的文件。
Gradle 文件配置 CMake
![](http://static.open-open.com/lib/uploadImg/20160930/20160930154017_459.jpg)
代码部分配置如下
![](http://static.open-open.com/lib/uploadImg/20160930/20160930154018_297.jpg)
注意:
红色方框中三块即可实现调用 NDK 来实现功能
(a). 使用 native 来定义 NDK 的方法:public native ***
(b). 使用 static 语块来引入 so 文件
(c). 调用时,只需要调用定义的 native 的方法即可
C/C++ 语法部分
![](http://static.open-open.com/lib/uploadImg/20160930/20160930154019_497.jpg)
08
Tips: 方法名的命名根之前方法一样,java_包名_类名_方法名
7、CMakeLists.txt 部分
![](http://static.open-open.com/lib/uploadImg/20160930/20160930154019_731.jpg)
09
Tips: 红色方框部分的名称可以同时更改, 注意两者需要一致, 更改名称后 会在 .externalNativeBuild 目录下生成相应的 so 的名称,Android 部分调用时 static 语块中 引入的 so 文件名也要保持一致
8、手机运行效果
![](http://static.open-open.com/lib/uploadImg/20160930/20160930154020_484.png)
这样一个简单NDK demo就完成了。
相关文章推荐
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)