========================================================
作者: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:


建立相应的类。在 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 操作:


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

例如以下,建立目录:


拷贝之前的文件进去:


分别实现:

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


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


设置 APP 项目build.gradle


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

主文件调用:


如今点击执行:


能够看见是很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 进行点击将会出现这个界面:



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

分别相应:

        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使用CheckedTextView搭配listview完成选择列表
  2. Android(安卓)build.gradle 中 使用 buildConfigField 动态设置
  3. Android(安卓)Studio 3.0以后打包修改文件名方法
  4. Android(安卓)下载文件至SD卡,并用progressBar显示下载进度
  5. ProgressBar播放动画
  6. Android(安卓)下载文件及写入SD卡
  7. Android(安卓)文件IO总结
  8. Android编译系统详解(三)
  9. android 设置textview边框以及点击效果

随机推荐

  1. Android之People&Roles
  2. Android AndroidStudio开发全部套件百度
  3. [转]近百android程序源码贡献
  4. Android开发笔记(二)——布局管理器
  5. Android如何在局域网中发送网络广播
  6. Android LifecycleObserver
  7. Android USB tethering相关代码
  8. 正则表达式pcre在Android下的移植
  9. ch015 Android ActivityGroup
  10. cocos2d-x android