[Android] 环境配置之Android(安卓)Studio开发NDK
转载:http://blog.csdn.net/qiujuer/article/details/42040963
========================================================
NDK 开发哪家强?XX XX 找Blue Fly.
说到NDK开发,其实是为了有些时候为了项目需求需要调用底层的一些C/C++的一些东西;另外就是为了效率更加高些。
但是很多时候能不用就不用;这个是啥原因?个人感觉有些时候是觉得麻烦,首先要配置 NDK 还要 下载 Cygwin ,配置 Cygwin ,然后需要编译生成,哎太麻烦了。如果你说使用Eclipse,的确这样在编译上是能简单很多,但是前期也是需要配置一大堆;哎,配置错了还伤不起。
现在谷歌主力推动Android Studio这个是个不错的工具,至少现在来看在Eclipse上能做到的 这边都有,这边有的Eclipse上不一定有。
下面来说说 在Android Studio中怎么进行NDK的开发。
准备工作
Android Studio 环境搭建
在我的上一篇文章[Android] 环境配置之正式版Android Studio 1.0中有介绍了。
NDK 环境搭建
- 下载:http://developer.android.com/tools/sdk/ndk/index.html
- Windows32:android-ndk-r10d-windows-x86.exe
- Windows64:android-ndk-r10d-windows-x86_64.exe
- Mac OS X 32-bit:android-ndk-r10d-darwin-x86.bin
- Mac OS X 64-bit:android-ndk-r10d-darwin-x86_64.bin
- Linux 32-bit (x86):android-ndk-r10d-linux-x86.bin
- Linux 64-bit (x86):android-ndk-r10d-linux-x86_64.bin
都是可执行文件,下载后点击即可解压到当前文件夹;当然你可以使用命令行来进行跨文件夹解压的。
建立一个项目 NDKDemo:
建立对应的类,在 MathKit 中我们实现计算 INT 值的平方数。
[java] view plain copy
- publicclassMathKit{
- publicstaticnativeintsquare(intnum);
- static{
- System.loadLibrary("JniDemo");
- }
- }
[java] view plain copy
- publicclassStringKit{
- publicstaticnativevoidsetNull(Stringstr);
- static{
- System.loadLibrary("JniDemo");
- }
- }
准备 .h 文件
进入Java目录;CMD 进入该目录进行 javah 操作:
这个想必大家并不陌生吧,该文件就是 java 类对应的 头文件,当然如果你比较厉害的话可以不用这样生成,自己敲代码完成也行;反正我是不行。
如下,建立文件夹:
拷贝之前的文件进去:
分别实现:
net_qiujuer_ndkdemo_jni_MathKit.cpp
[cpp] view plain copy
- #include<net_qiujuer_ndkdemo_jni_MathKit.h>
- JNIEXPORTjintJNICALLJava_net_qiujuer_ndkdemo_jni_MathKit_square
- (JNIEnv*env,jclasscls,jintnum)
- {
- returnnum*num;
- }
[cpp] view plain copy
- #include<net_qiujuer_ndkdemo_jni_StringKit.h>
- JNIEXPORTvoidJNICALLJava_net_qiujuer_ndkdemo_jni_StringKit_setNull
- (JNIEnv*env,jclassobj,jstringstr)
- {
- }
设置项目
设置根目录中的:local.properties
该设置不是必须,如果你设置了环境变量则可不用设置;如果没有但是又没有设置将会出现:
设置 APP 项目build.gradle
该设置是为了设置生成的Jni名称为:JniDemo。
主文件调用:
现在点击运行:
可以看见是非常简单的;这个调用可以说是我操作过最简单的了;甚至于生成 .H 文件都可以编辑 .sh 文件来进行批处理(这个后面有时间再说).
更多
在平时的那些操作中我们不可避免的要建立:
Android.mk
[cpp] view plain copy
- LOCAL_PATH:=$(callmy-dir)
- include$(CLEAR_VARS)
- LOCAL_MODULE:=genius
- LOCAL_SRC_FILES:=net_qiujuer_imageblurring_jni_ImageBlur.cpp
- LOCAL_LDLIBS:=-lm-llog-ljnigraphics
- include$(BUILD_SHARED_LIBRARY)
[cpp] view plain copy
- APP_ABI:=all
- APP_PLATFORM:=android-19
- APP_OPTIM:=release
我们可以在 ndk 的 modelName 上按住 Ctrl 进行点击将会出现这个界面:
这些就是全部能够设置的参数。分别对应:
[ruby] view plain copy
- ndk{
- moduleName"JniDemo"//设置生成的文件名
- cFlags"-DANDROID_NDK-D_RELEASE"//这个对应的是生成模式
- ldLibs"m","log","jnigraphics"//这个对应LOCAL_LDLIBS但是需要去掉前面的“l”
- abiFilters"all"//这个是对应的APP_ABI
- stl"stlport_shared"//这个对应的是APP_STL
- }
好了,就这些祝大家成功。项目打包上传。
本次项目点击这里下载。
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- Android(安卓)编译过程分析(1)
- Android(安卓)studio gradle配置完整版(转)
- NDK开发笔记 ✎