========================================================

作者:qiujuer

网站:www.qiujuer.net

开源库:Genius-Android

========================================================

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

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

但是很多时候能不用就不用;这个是啥原因?个人感觉有些时候是觉得麻烦,首先要配置 NDK 还要 下载 Cygwin ,配置 Cygwin ,然后需要编译生成,哎太麻烦了。如果你说使用Eclipse,的确这样在编译上是能简单很多,但是前期也是需要配置一大堆;哎,配置错了还伤不起。

现在谷歌主力推动 Android Studio这个是个不错的工具,至少现在来看在 Eclipse 上能做到的 这边都有,这边有的Eclipse上不一定有。

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

准备工作

Android Studio 环境搭建

NDK 环境搭建

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

建立一个项目 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

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

JNIEXPORT void JNICALL Java_net_qiujuer_ndkdemo_jni_StringKit_setNull

(JNIEnv *env, jclass obj, jstring str)

{

}

设置项目

设置根目录中的:local.properties

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

设置 APP 项目build.gradle

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

主文件调用:

现在点击运行:

可以看见是非常简单的;这个调用可以说是我操作过最简单的了;甚至于生成 .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 -ljnigraphics

include $(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_ABI

stl "stlport_shared" //这个对应的是 APP_STL

}

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

本次项目点击这里下载。

========================================================

作者:qiujuer

网站:www.qiujuer.net

开源库:Genius-Android

========================================================

android ndk r10d.rar,[Android] 环境配置之Android Studio开发NDK相关推荐

  1. Android环境配置(Eclipse全开发环境下载)

    Android环境配置 前期准备 Android环境的Eclipse: 网站链接:https://www.runoob.com/w3cnote/android-tutorial-eclipse-adt ...

  2. Linux开发环境配置--正点原子阿尔法开发板

    Linux开发环境配置–正点原子阿尔法开发板 文章目录 Linux开发环境配置--正点原子阿尔法开发板 1.网络环境设置 1.1添加网络适配器 1.2虚拟网络编辑器设置 1.3Ubuntu和Windo ...

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

    2019独角兽企业重金招聘Python工程师标准>>> ======================================================== 作者:qiu ...

  4. Unity5.6+ 导出Android 应用程序apk的环境配置及导出过程

    首先下载并安装安卓SDK和java的JDK 安卓sdk下载: http://www.android-studio.org/ 也可以在这下载: 链接:http://pan.baidu.com/s/1bp ...

  5. 安卓逆向_15( 二 ) --- Android Studio 3.6.3 JNI 环境配置 和 so 生成开发 demo

    From:Android Studio 3.0 JNI 的实现:https://blog.csdn.net/ziyoutiankoong/article/details/79696279 Androi ...

  6. windows下JDK环境配置与Android SDK环境配置

    一.JDK环境配置 1.配置 变量名:JAVA_HOME 变量值:jdk安装的绝对路径. 变量名:Path(在系统变量中找到并选中Path点击下面的编辑按钮,不要删除原本变量值中的任何一个字母,在这个 ...

  7. Android + Appium 自动化测试完整的环境配置及代码详解

    环境的的搭建 参考大神博客:https://www.cnblogs.com/fnng/p/4540731.html 该博客有一套详细的入门教程,奈何时间有点久远有些东西不能用了,但是参考价值还是有滴. ...

  8. Unity 2021.1.15 ARCore环境配置与样例开发

    前言 首先这个文档是基于Unity2018及以上的,由于实习需要做AR相关的内容,但是AR Core之前的教程大多是基于SDK的,而这一功能已不在Unity更高版本中支持,同时楼主又是个Unity小白 ...

  9. C#对UG二次开发环境配置、调试和开发教程

    一.UG的宏录制 1.选择宏录制的语言C# 1.1 打开NX新建一个模型 1.2 打开文件->首选项->用户界面,设置录制语言为C# 1.3 打开开发人员,点录制即可进行录制 1.4 将录 ...

  10. win10下从源码运行Cura——环境配置(二次开发准备工作)

    win10下从源码运行Cura(二次开发准备工作) win10下从源码运行Cura 配置过程(踩坑指南) win10下从源码运行Cura 本人小白一只,近来需要了解Cura,故自己摸爬滚打学习.网上对 ...

最新文章

  1. 阿里巴巴副总裁司罗:达摩院如何搭建NLP技术体系?
  2. Base64编码和解码
  3. Android系统分区理解及分区目录细解
  4. 反射中 BindingFlags标识
  5. 计算机联锁与全电子执行单元,计算机联锁全电子执行单元.doc
  6. http://4526621.blog.51cto.com/4516621/1343369
  7. java调用outlook
  8. 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变...
  9. c# ComboBox禁用鼠标滚轮
  10. 微信小程序如何去掉button边框
  11. 使用 ExtJS 实现 ASP.NET MVC 2 客户端验证
  12. 税控服务器组件接口v2.1.1.1,税控开票服务器组件接口规范标准版V1.9(2016.04.04).pdf...
  13. 去哪里学习行业知识?
  14. 统一资源定位符URL和统一资源标识符URI
  15. poj3537 Crosses ans Crosses
  16. jupyter notebook更改默认浏览器
  17. 《现代操作系统》阅读笔记
  18. 如何去爱一个人[转]
  19. linux 命令 root用户把某个文件权限给到普通用户
  20. 出炉!2021 编程语言排行榜~

热门文章

  1. Atitit 网关协议cgi wsgi fcgi fastcgi 目录 1.1. CGI(common gateway unterface) 1 1.2. 2.1 WSGI: 1 1.3. 2.3
  2. Atitit.一个cms有多少少扩展点,多少api wordpress  cms有多少api。。扩展点
  3. Atitit.提升稳定性-----分析内存泄漏PermGen OOM跟解决之道...java
  4. paip.提升安全性-------用户口令密码的检测与生成
  5. PAIP.DB4O与SQL配合使用在海量数据下.txt
  6. python: 大规模数据集的读存技巧
  7. 独家|对决金融云:备案将至,谁得先手
  8. 经纬徐传陞:越是市场低迷之时,越要把握自己的节奏 | 远见2018
  9. 当第一资本、高盛、摩根士丹利等巨头纷纷启用CDO时,您想到了什么?
  10. Julia : Formatting库的 fmt Base.@sprintf