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

时间:2023-02-12 15:22:27

分类:Android环境搭建

(14351)  (20)

========================================================
作者: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 环境搭建

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

建立一个项目 NDKDemo:

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

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

  1. public class MathKit {
  2. public static native int square(int num);
  3. static {
  4. System.loadLibrary("JniDemo");
  5. }
  6. }

StringKit 这个就是充数用的:

  1. public class StringKit {
  2. public static native void setNull(String str);
  3. static {
  4. System.loadLibrary("JniDemo");
  5. }
  6. }

准备 .h 文件

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

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

这个想必大家并不陌生吧,该文件就是 java 类对应的 头文件,当然如果你比较厉害的话可以不用这样生成,自己敲代码完成也行;反正我是不行。

如下,建立文件夹:

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

拷贝之前的文件进去:

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

分别实现:

net_qiujuer_ndkdemo_jni_MathKit.cpp

  1. #include <net_qiujuer_ndkdemo_jni_MathKit.h>
  2. JNIEXPORT jint JNICALL Java_net_qiujuer_ndkdemo_jni_MathKit_square
  3. (JNIEnv *env, jclass cls, jint num)
  4. {
  5. return num*num;
  6. }

net_qiujuer_ndkdemo_jni_StringKit.cpp

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

设置项目

设置根目录中的:local.properties

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

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

[Android] 环境配置之Android Studio开发NDK
设置 APP 项目 build.gradle

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

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

主文件调用:

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

现在点击运行:

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

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

更多

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

Android.mk

  1. LOCAL_PATH      := $(call my-dir)
  2. include $(CLEAR_VARS)
  3. LOCAL_MODULE    := genius
  4. LOCAL_SRC_FILES := net_qiujuer_imageblurring_jni_ImageBlur.cpp
  5. LOCAL_LDLIBS    := -lm -llog -ljnigraphics
  6. include $(BUILD_SHARED_LIBRARY)

Application.mk

  1. APP_ABI     := all
  2. APP_PLATFORM:= android-19
  3. APP_OPTIM   := release

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

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

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

这些就是全部能够设置的参数。分别对应:

  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
========================================================

[Android] 环境配置之Android Studio开发NDK的更多相关文章

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

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

  2. &lbrack;Android&rsqb; 环境配置之基础开发环境(SDK&sol;Android Studio)(转)

    [Android] 环境配置之基础开发环境(SDK/Android Studio)   博客: blog.csdn.net/qiujuer 网站: www.qiujuer.net 开源库: Geniu ...

  3. &lbrack;Android&rsqb; 环境配置之正式版Android Studio 1&period;0

    昨天看见 Android Studio 1.0 正式版本发布了:心里挺高兴的. 算是忠实用户了吧,从去年开发者大会一开始出现 AS 后就开始使用了:也是从那时开始就基本没有用过 Eclipse 了:一 ...

  4. 【React Native开发】React Native For Android环境配置以及第一个实例&lpar;1&rpar;

    年9月15日也公布了ReactNative for Android,尽管Android版本号的项目公布比較迟,可是也没有阻挡了广大开发人员的热情.能够这样讲在2015年移动平台市场上有两个方向技术研究 ...

  5. OpenCV On Android环境配置最新&amp&semi;最全指南&lpar;Android Studio篇&rpar;

    本文是从本人简书上搬运而来,属本人原创,如有转载,请注明出处:http://www.jianshu.com/p/6e16c0429044 简介 本文是<OpenCV On Android环境配置 ...

  6. OpenCV On Android环境配置最新&amp&semi;最全指南&lpar;Eclipse篇&rpar;

    简介 本教程是经过本人多次踩坑,并参考网上众多OpenCV On Android的配置教程总结而来,尽希望能帮助学习移动图像处理的朋友们少走弯路.这也是本人第一次在简书上发布文章,如有不足,希望各位d ...

  7. cocos2dx - android环境配置及编译

    接上一节内容:cocos2dx - 伤害实现 本节主要讲Android环境配置及编译 在第一节中setup.py的配置里,我们没有配置对应的ndk,sdk,ant的路径,在这里需要先配置好环境变量. ...

  8. Android环境配置之正式版AndroidStudio1&period;0

    昨天看见 Android Studio 1.0 正式版本发布了:心里挺高兴的. 算是忠实用户了吧,从去年开发者大会一开始出现 AS 后就开始使用了:也是从那时开始就基本没有用过 Eclipse 了:一 ...

  9. Android开发快速入门(环境配置、Android Studio安装)

    Android是一种激动人心的开源移动平台,它像手机一样无处不在,得到了Google以及其他一些开放手机联盟成员(如三星.HTC.中国移动.Verizon和AT&T等)的支持,因而不能不加以学 ...

随机推荐

  1. ZeroMQ接口函数之 :zmq&lowbar;msg&lowbar;recv - 从一个socket中接受一个消息帧

    ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_msg_recv zmq_msg_recv(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_ ...

  2. TortoiseSVN安装使用

    TortoiseSVN是windows平台下Subversion的免费开源客户端. 一般我们都是先讲讲服务器的配置,然后再讲客户端的使用,但是在TortoiseSVN上,却可以反过来.因为,如果你的要 ...

  3. 3----lua的数据转换及运算符

    lua的基本数据类型转换 转换成字符串 tostring( ... ) 可以将布尔类型和数字类型的值转换为字符串类型的值 local num=1; print(type(num)) newNum = ...

  4. leetcode第一刷&lowbar;Construct Binary Tree from Preorder and Inorder Traversal

    构造方式跟中序与后序全然一样,并且一般都习惯正着来,所以更简单. 代码是之前写的,没实用库函数,不应该. TreeNode *buildIt(vector<int> &preord ...

  5. 一步一步实现基于Task的Promise库(五)waitFor和waitForAny的实现

    在实现waitFor方法之前,我们先要搞明白下面这些问题: 1. waitFor方法的形参有限制吗? 没有!如果形参是Task类型,不应该启动Task,如果是function类型,会执行方法.所以wa ...

  6. angularjs的forEach使用

    最近一直在写angularjs中的http后台数据交互,存在的问题就是数据传输中数据格式的问题,如何将传输过来的数据转化为自己需要的数据.当然如果你会一点后台语言的话,完全可以用在后台把数据转化为需要 ...

  7. FusionCharts 分类以及各个属性参数列表

    <FusionCharts学习及使用笔记>之 第一篇 其实一直以来我都在有意无意的把我平常工作中遇到并解决的问题做个记录,放到我的网易博客中.但却一直没有想过如何把我使用的技术做一个系列化 ...

  8. 学习接水系统(java&plus;thread线程)

    (一)项目框架分析 对于学生并发接水项目,根据面向对象的思想,需要创建两个对象,即学生和水龙头. 接下来主要讲解不排队接水和排队接水两张情况. 项目的目录文件如下: (二)不排队接水 假设有四个学生小 ...

  9. codeforces 796A-D

    决定在 codeforces 练题啦,决定每个比赛刷前四道...太难就算了 796A Buying A House 题意:给出x轴上的n 个点,每个点有个权值,问离m 点最近的权值小于等于k 的点离m ...

  10. 步步深入:MySQL架构总览-&gt&semi;查询执行流程-&gt&semi;SQL解析顺序&lpar;转&rpar;

    文章转自   http://www.cnblogs.com/annsshadow/p/5037667.html https://www.cnblogs.com/cuisi/p/7685893.html