========================================================
作者:qiujuer
博客:blog.csdn.net/qiujuer
站点:www.qiujuer.net
开源库:Genius-Android
转载请注明出处: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:

[Android] 环境优化配置Android Studio发展NDK_第1张图片

建立相应的类。在 MathKit 中我们实现计算 INT 值的平方数。

public class MathKit {    public static native int square(int num);    static {        System.loadLibrary("JniDemo");    }}
StringKit 这个就是充数用的:

public class StringKit {    public static native void setNull(String str);    static {        System.loadLibrary("JniDemo");    }}

准备 .h 文件

进入Java文件夹;CMD 进入该文件夹进行 javah 操作:

[Android] 环境优化配置Android Studio发展NDK_第2张图片

这个想必大家并不陌生吧,该文件就是 java 类相应的 头文件。当然假设你比較厉害的话能够不用这样生成。自己写程序完毕也行。反正我是不行。

例如以下,建立目录:

[Android] 环境优化配置Android Studio发展NDK_第3张图片

拷贝之前的文件进去:

[Android] 环境优化配置Android Studio发展NDK_第4张图片

分别实现:

net_qiujuer_ndkdemo_jni_MathKit.cpp

#include <net_qiujuer_ndkdemo_jni_MathKit.h>JNIEXPORT jint JNICALL Java_net_qiujuer_ndkdemo_jni_MathKit_square  (JNIEnv *env, jclass cls, jint num)  {        return num*num;  }
net_qiujuer_ndkdemo_jni_StringKit.cpp

#include <net_qiujuer_ndkdemo_jni_StringKit.h>JNIEXPORT void JNICALL Java_net_qiujuer_ndkdemo_jni_StringKit_setNull  (JNIEnv *env, jclass obj, jstring str)  {  }

设置项目

设置根文件夹中的:local.properties

[Android] 环境优化配置Android Studio发展NDK_第5张图片

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


设置 APP 项目build.gradle

[Android] 环境优化配置Android Studio发展NDK_第6张图片

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

主文件调用:

[Android] 环境优化配置Android Studio发展NDK_第7张图片

如今点击执行:

[Android] 环境优化配置Android Studio发展NDK_第8张图片

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


很多其它

在平时的那些操作中我们不可避免的要建立:

Android.mk

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE    := geniusLOCAL_SRC_FILES := net_qiujuer_imageblurring_jni_ImageBlur.cppLOCAL_LDLIBS    := -lm -llog -ljnigraphicsinclude $(BUILD_SHARED_LIBRARY)
Application.mk

APP_ABI:= allAPP_PLATFORM:= android-19APP_OPTIM:= release
而这里这两个文件都没有建立,那么是怎么决定的呢?

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

[Android] 环境优化配置Android Studio发展NDK_第9张图片

这些就是所有可以设置的參数。

分别相应:

        ndk{            moduleName "JniDemo" // 设置生成的文件名称            cFlags "-DANDROID_NDK -D_RELEASE" //这个相应的是生成模式            ldLibs "m", "log", "jnigraphics" //这个相应 LOCAL_LDLIBS 可是须要去掉前面的 “l”            abiFilters "all" //这个是相应的 APP_ABI            stl "stlport_shared" //这个相应的是 APP_STL         }

好了。就这些祝大家成功。项目打包上传。

本次项目点击这里下载。

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

版权声明:本文博客原创文章。博客,未经同意,不得转载。

更多相关文章

  1. Android Studio 3.0以后打包修改文件名方法
  2. Android 下载文件至SD卡,并用progressBar显示下载进度
  3. android图片压缩方法
  4. Android 文件IO总结
  5. Android--取出SDcard卡上指定后缀名的文件
  6. android ListView SimpleAdapter 带图片
  7. AndroidManifest.xml文件详解(service)
  8. Android之OnGestureListener实现图片的左右滑动

随机推荐

  1. 学习android for eclipse
  2. Android(安卓)轻松实现语音朗读
  3. android p文件管理器中apk文件,没有蓝牙发
  4. 解决ASIHTTP setFile上传文件后中文乱码
  5. Android(安卓)AIDL使用详解
  6. Android(安卓)8.0 通知适配
  7. Android三种常用动画分享
  8. Android中的菜单显示风格
  9. Android(安卓)开发之 Gradle那些事儿(二)
  10. Android(安卓)Render(三)supportVersion