[Android] 环境配置之Android Studio开发NDK

html

 java

========================================================
做者:qiujuer
博客:blog.csdn.net/qiujuer
网站:www.qiujuer.net
开源库:Genius-Android
转载请注明出处:http://blog.csdn.net/qiujuer/article/details/42040963
========================================================linux

NDK 开发哪家强?XX XX 找 Blue Fly.android

说到 NDK 开发,实际上是为了有些时候为了项目需求须要调用底层的一些 C/C++ 的一些东西;另外就是为了效率更加高些。git

可是不少时候能不用就不用;这个是啥缘由?我的感受有些时候是以为麻烦,首先要配置 NDK 还要 下载 Cygwin ,配置 Cygwin ,而后须要编译生成,哎太麻烦了。若是你说使用 Eclipse,的确这样在编译上是能简单不少,可是前期也是须要配置一大堆;哎,配置错了还伤不起。github

如今谷歌主力推进 Android Studio 这个是个不错的工具,至少如今来看在 Eclipse 上能作到的 这边都有,这边有的Eclipse上不必定有。windows

下面来讲说 在 Android Studio 中怎么进行 NDK 的开发。ruby

准备工做

Android Studio 环境搭建

在个人上一篇文章 [Android] 环境配置之正式版Android Studio 1.0 中有介绍了。工具

NDK 环境搭建

都是可执行文件,下载后点击便可解压到当前文件夹;固然你可使用命令行来进行跨文件夹解压的。gradle

创建一个项目 NDKDemo:

创建对应的类,在 MathKit 中咱们实现计算 INT 值的平方数。

[java]  view plain copy 在CODE上查看代码片派生到个人代码片
  1. public class MathKit {  
  2.     public static native int square(int num);  
  3.   
  4.     static {  
  5.         System.loadLibrary("JniDemo");  
  6.     }  
  7. }  
StringKit 这个就是充数用的:
[java]  view plain copy 在CODE上查看代码片派生到个人代码片
  1. public class StringKit {  
  2.     public static native void setNull(String str);  
  3.     static {  
  4.         System.loadLibrary("JniDemo");  
  5.     }  
  6. }  

准备 .h 文件

进入Java目录;CMD 进入该目录进行 javah 操做:

这个想必你们并不陌生吧,该文件就是 java 类对应的 头文件,固然若是你比较厉害的话能够不用这样生成,本身敲代码完成也行;反正我是不行。

以下,创建文件夹:

拷贝以前的文件进去:

分别实现:

net_qiujuer_ndkdemo_jni_MathKit.cpp

[cpp]  view plain copy 在CODE上查看代码片派生到个人代码片
  1. #include <net_qiujuer_ndkdemo_jni_MathKit.h>  
  2.   
  3. JNIEXPORT jint JNICALL Java_net_qiujuer_ndkdemo_jni_MathKit_square  
  4.   (JNIEnv *env, jclass cls, jint num)  
  5.   {  
  6.         return num*num;  
  7.   }  
net_qiujuer_ndkdemo_jni_StringKit.cpp
[cpp]  view plain copy 在CODE上查看代码片派生到个人代码片
  1. #include <net_qiujuer_ndkdemo_jni_StringKit.h>  
  2.   
  3. JNIEXPORT void JNICALL Java_net_qiujuer_ndkdemo_jni_StringKit_setNull  
  4.   (JNIEnv *env, jclass obj, jstring str)  
  5.   {  
  6.   
  7.   }  

设置项目

设置根目录中的:local.properties

该设置不是必须,若是你设置了环境变量则可不用设置;若是没有可是又没有设置将会出现:


设置 APP 项目 build.gradle

该设置是为了设置生成的Jni名称为:JniDemo。

主文件调用:

如今点击运行:

能够看见是很是简单的;这个调用能够说是我操做过最简单的了;甚至于生成 .H 文件均可以编辑 .sh 文件来进行批处理(这个后面有时间再说).

 

更多

在平时的那些操做中咱们不可避免的要创建:

Android.mk

[cpp]  view plain copy 在CODE上查看代码片派生到个人代码片
  1. LOCAL_PATH      := $(call my-dir)  
  2.   
  3. include $(CLEAR_VARS)  
  4.   
  5. LOCAL_MODULE    := genius  
  6. LOCAL_SRC_FILES := net_qiujuer_imageblurring_jni_ImageBlur.cpp  
  7. LOCAL_LDLIBS    := -lm -llog -ljnigraphics  
  8.   
  9. include $(BUILD_SHARED_LIBRARY)  
Application.mk
[cpp]  view plain copy 在CODE上查看代码片派生到个人代码片
  1. APP_ABI     := all  
  2. APP_PLATFORM:= android-19  
  3. APP_OPTIM   := release  
而这里这两个文件都没有创建,那么是怎么决定的呢?

咱们能够在 ndk 的 modelName 上按住 Ctrl 进行点击将会出现这个界面:



这些就是所有可以设置的参数。分别对应:

[ruby]  view plain copy 在CODE上查看代码片派生到个人代码片
  1. ndk{  
  2.     moduleName "JniDemo" // 设置生成的文件名  
  3.     cFlags "-DANDROID_NDK -D_RELEASE" //这个对应的是生成模式  
  4.     ldLibs "m", "log", "jnigraphics" //这个对应 LOCAL_LDLIBS 可是须要去掉前面的 “l”  
  5.     abiFilters "all" //这个是对应的 APP_ABI  
  6.     stl "stlport_shared" //这个对应的是 APP_STL   
  7. }  

好了,就这些祝你们成功。项目打包上传。

本次项目点击这里下载。

========================================================
做者:qiujuer
博客:blog.csdn.net/qiujuer
网站:www.qiujuer.net
开源库:Genius-Android
转载请注明出处:http://blog.csdn.net/qiujuer/article/details/42040963========================================================

相关文章
相关标签/搜索