========================================================
作者: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    := genius
LOCAL_SRC_FILES := net_qiujuer_imageblurring_jni_ImageBlur.cpp
LOCAL_LDLIBS    := -lm -llog -ljnigraphicsinclude $(BUILD_SHARED_LIBRARY)

Application.mk

APP_ABI       := all
APP_PLATFORM:= android-19
APP_OPTIM   := release

而这里这两个文件都没有建立,那么是怎么决定的呢?

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

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

分别相应:

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

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

本次项目点击这里下载。

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

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

[Android] 环境优化配置Android Studio发展NDK相关推荐

  1. 【转载】Ubuntu环境下配置Android Studio

    之前学习Android开发的时候,一直跟各种教程一样,使用的是Eclipse+ADT,主要是比较方便,容易上手,特别是对于习惯用Eclipse开发java的朋友来说,上手更是好无压力.但毕竟Eclip ...

  2. Windows + Ubuntu下JDK与adb/android环境变量配置完整教程

    假设JDK和android sdk路径分别如下: D:\Program Files\Java\jdk D:\android-sdk 1.JDK环境变量配置 JAVA_HOME=D:\Program F ...

  3. 简单易行的用windows系统虚拟苹果mac操作系统 mac下android环境搭建笔记(android studio)

    作者:韩梦飞沙 QQ:313134555 ios模拟器电脑版中文版(iPadian)下载 - 『精品软件区』 - 吾爱破解论坛 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52po ...

  4. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )

    文章目录 一. 图片质量压缩方法 二. 查找对应的 Native 方法源码 三. 分析 Bitmap.cpp 中动态注册 Native 方法 在博客 [Android 内存优化]图片文件压缩 ( An ...

  5. 【Android CPU 优化】Android CPU 调优 ( Trace 文件分析 | Android Profiler 工具 | CPU Profiler 工具 )

    文章目录 一.Android CPU 优化 二.CPU Profiler 工具 三.相关资源 一.Android CPU 优化 在 Android 中 , 出现 动画掉帧 , 页面切换白屏 , 卡顿 ...

  6. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )

    文章目录 一. 哈夫曼编码开关 二. 哈夫曼编码原理 三. libjpeg-turbo 函数库 四. libjpeg-turbo 函数库下载 [Android 内存优化]图片文件压缩 ( Androi ...

  7. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )

    文章目录 一.使用 libjpeg-turbo 压缩图片流程 二.初始化 JPEG 压缩对象 三.打开文件 四.设置压缩参数 五.开始压缩 六.循环写入压缩数据 七.完成图片压缩及收尾 八.libjp ...

  8. 【Android 内存优化】Android 原生 API 图片压缩原理 ( Bitmap_compress 方法解析 | Skia 二维图形库 | libjpeg 函数库 | libpng 函数库 )

    文章目录 一. 图片质量压缩方法 二. Skia 二维图形库 三. libjpeg.libpng 函数库引入 在博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供的 ...

  9. mac下android环境搭建笔记(android studio)

    本文记录了本人在mac上配置android开发环境的一些过程,为了方便直接选用了官方的IDE– Android Studio .本文包括了android studio的安装.创建第一个hello wo ...

最新文章

  1. stm32怎么查看什么原因引起的nmi_为什么会有口臭,口臭是什么原因引起的,口臭是怎么回事...
  2. SQL Server DBA常见面试 笔试问题
  3. application time for the banking industry
  4. Java Web——ResponseBean类DEMO
  5. [软件测试airtest软件安装]——填坑
  6. linux chattr 无权限,从零开始学习Linux(二十八):文件权限之chattr权限
  7. Python面试总结(四)ip正则与三次握手四次挥手
  8. 分数化小数(指定精度)
  9. php mkdir用户,PHP mkdir()无写权限的问题解决方法
  10. bzoj1225 [HNOI2001] 求正整数 约数个数定理+对数
  11. 明星分手文案火了!为了营销 你们这些商家也是很努力啊...
  12. java打印unicode_java程序实现Unicode码和中文互相转换
  13. linux汉诺塔实验报告,汉诺塔问题实验报告
  14. 京东智联云贪心科技:图卷积神经网络在推荐系统的应用
  15. DSN格式转SCH格式
  16. Elastic:开发者上手指南
  17. [HCTF 2018]WarmUp1PHP 代码审计
  18. 内蒙古大学计算机学院研究生导师,内蒙古大学计算机学院研究生导师:郭仁拥...
  19. 学习编程,以“上帝视角”创造和改变这个世界
  20. java 引用数据类型Scanner类 Random类

热门文章

  1. JavaScript中的try...catch...finally
  2. php安装sg11扩展,Centos下安装SG11加密扩展插件
  3. java 同步块_java 同步块(Java Synchronized Blocks)
  4. 计算机安全流量填充,计算机安全.doc
  5. c语言 结构作用是什么,C语言选择结构知识点
  6. 查看oracle的版本、所在表空间、字符集及查询一个表的所有字段名和数据类型
  7. linux下的/dev/shm/ 以及与swap目录的区别
  8. SQLite大漏洞!所有Chromium浏览器中招,安卓iOS应用也受殃及
  9. 腾讯首投AI芯片,领投燧原科技Pre-A轮3.4亿元融资
  10. 理解 Redux 的最好方式,是自己写一个