Android Studio 2.2 NDK CMake方式入门
AdrienneCon
8年前
<h3><strong>简述</strong></h3> <p>期待已久的android studio 2.2正式版本终于发布了,该版本开始开发 NDK 便简单了很多,比起使用 javac、javah 命令才能完成的方式简直是质的提升,就是本文所讲的 CMake 方式了,Android 对 CMake的说明请戳: <a href="/misc/goto?guid=4959718249521380906" rel="nofollow,noindex">CMake API</a></p> <p>本次关于 CMake 的内容不做讲解,各位看官可以自行学习, <a href="/misc/goto?guid=4959718249612783599" rel="nofollow,noindex">CMake官网</a></p> <h3><strong>1、新建 Ndk Project</strong></h3> <p><img src="https://simg.open-open.com/show/fe922f5a1780623a868fcdd65b9e3f43.jpg"></p> <p style="text-align: center;">01</p> <p>Tips: 新建一个支持 "Include C++ Support" 的项目,把 Include C++ Support 前面的选项打上勾,然后一路 Next,直到 Finish 为止。</p> <h3><strong>2、配置 NDK 的支持</strong></h3> <p><img src="https://simg.open-open.com/show/25b4d2120026865839d497f94410cfb7.jpg"></p> <p style="text-align: center;">02</p> <p><img src="https://simg.open-open.com/show/eb5736137cc0ed423a146076aa5bc236.jpg"></p> <p style="text-align: center;">03</p> <p><img src="https://simg.open-open.com/show/2b0dc327db52c773dc6527478c7bdbef.jpg"></p> <p style="text-align: center;">04</p> <p>Tips: 需要下载好 NDK,然后配置 NDK 所在的路径</p> <h3><strong>3、编译好的项目一览</strong></h3> <p><img src="https://simg.open-open.com/show/2abb37393c64008ae6cf803ef40444f7.jpg"></p> <p style="text-align: center;">05</p> <p>Tips: 图中红色方框选中的区域为 NDK 的东东</p> <p>(a). externalNativeBuild ---> cmake 编译好的文件, 显示支持的各种硬件等信息</p> <p>(b). cpp ---> C 语言程序的逻辑部分, native-lib.cpp 文件名可自行修改</p> <p>(c). CMakeLists.txt ---> CMake 脚本配置的文件, 具体可查阅 CMake官网的资料</p> <h3><strong>4、Gradle 文件配置 CMake</strong></h3> <p><img src="https://simg.open-open.com/show/42bb4e52ff92900fc3fac0927bf5f90d.jpg"></p> <p style="text-align: center;">06</p> <p>Tips: 只需要配置这两块即可,是不是特简单呢。当然这里还支持配置更多指令 (非常强大),具体可查阅 CMake 官网</p> <h3><strong>5、MainActivity 部分</strong></h3> <p><img src="https://simg.open-open.com/show/a4203b2ecb367171723055a55dd59619.jpg"></p> <p style="text-align: center;">07</p> <p>Tips: 红色方框中三块即可实现调用 NDK 来实现功能</p> <p>(a). 使用 native 来定义 NDK 的方法:public native ***</p> <p>(b). 使用 static 语块来引入 so 文件</p> <p>(c). 调用时,只需要调用定义的 native 的方法即可</p> <h3><strong>6、C/C++ 语法部分</strong></h3> <p><img src="https://simg.open-open.com/show/042f7f44679a6516023e3982abaa8e85.jpg"></p> <p style="text-align: center;">08</p> <p>Tips: 方法名的命名根之前方法一样,java_包名_类名_方法名</p> <h3><strong>7、CMakeLists.txt 部分</strong></h3> <p><img src="https://simg.open-open.com/show/e826afc1683fdf5e42005499f71f122a.jpg"></p> <p style="text-align: center;">09</p> <p>Tips: 红色方框部分的名称可以同时更改, 注意两者需要一致, 更改名称后 会在 .externalNativeBuild 目录下生成相应的 so 的名称,Android 部分调用时 static 语块中 引入的 so 文件名也要保持一致</p> <h3><strong>8、手机运行效果</strong></h3> <p><img src="https://simg.open-open.com/show/0fa99bc1866ddfe36f7c7a388a0bcb51.png"></p> <p style="text-align: center;">10</p> <p>以上只是简单的演示了 <如何创建 CMake 方式实现 Android Studio 2.2 版本 的NDK> 的教程,希望本文可以帮到一些人。</p> <p>Tips: JNI 类可以单独一个类,不是必须在 MainActivity 类中</p> <p> </p> <p>来自:http://www.jianshu.com/p/18724f29d30e</p> <p> </p>