[Android] 环境配置之Android Studio开发NDK
分类: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 环境搭建
- 下载: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。
主文件调用:
现在点击运行:
可以看见是非常简单的;这个调用可以说是我操作过最简单的了;甚至于生成 .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
博客:blog.csdn.net/qiujuer
网站:www.qiujuer.net
开源库:Genius-Android
转载请注明出处:http://blog.csdn.net/qiujuer/article/details/42040963
========================================================
[Android] 环境配置之Android Studio开发NDK的更多相关文章
- Android环境配置(Eclipse全开发环境下载)
Android环境配置 前期准备 Android环境的Eclipse: 网站链接:https://www.runoob.com/w3cnote/android-tutorial-eclipse-adt ...
- [Android] 环境配置之基础开发环境(SDK/Android Studio)(转)
[Android] 环境配置之基础开发环境(SDK/Android Studio) 博客: blog.csdn.net/qiujuer 网站: www.qiujuer.net 开源库: Geniu ...
- [Android] 环境配置之正式版Android Studio 1.0
昨天看见 Android Studio 1.0 正式版本发布了:心里挺高兴的. 算是忠实用户了吧,从去年开发者大会一开始出现 AS 后就开始使用了:也是从那时开始就基本没有用过 Eclipse 了:一 ...
- 【React Native开发】React Native For Android环境配置以及第一个实例(1)
年9月15日也公布了ReactNative for Android,尽管Android版本号的项目公布比較迟,可是也没有阻挡了广大开发人员的热情.能够这样讲在2015年移动平台市场上有两个方向技术研究 ...
- OpenCV On Android环境配置最新&最全指南(Android Studio篇)
本文是从本人简书上搬运而来,属本人原创,如有转载,请注明出处:http://www.jianshu.com/p/6e16c0429044 简介 本文是<OpenCV On Android环境配置 ...
- OpenCV On Android环境配置最新&最全指南(Eclipse篇)
简介 本教程是经过本人多次踩坑,并参考网上众多OpenCV On Android的配置教程总结而来,尽希望能帮助学习移动图像处理的朋友们少走弯路.这也是本人第一次在简书上发布文章,如有不足,希望各位d ...
- cocos2dx - android环境配置及编译
接上一节内容:cocos2dx - 伤害实现 本节主要讲Android环境配置及编译 在第一节中setup.py的配置里,我们没有配置对应的ndk,sdk,ant的路径,在这里需要先配置好环境变量. ...
- Android环境配置之正式版AndroidStudio1.0
昨天看见 Android Studio 1.0 正式版本发布了:心里挺高兴的. 算是忠实用户了吧,从去年开发者大会一开始出现 AS 后就开始使用了:也是从那时开始就基本没有用过 Eclipse 了:一 ...
- Android开发快速入门(环境配置、Android Studio安装)
Android是一种激动人心的开源移动平台,它像手机一样无处不在,得到了Google以及其他一些开放手机联盟成员(如三星.HTC.中国移动.Verizon和AT&T等)的支持,因而不能不加以学 ...
随机推荐
- Linux学习-灾难复原的考虑
硬件损毁,且具有完整备份的数据时 由于是硬件损毁,所以我们不需要考虑系统软件的不稳定问题,所以可以直接将完整的系统复原回去 即可. 由于软件的问题产生的被攻破资安事件 由于系统的损毁是因为被攻击,此时 ...
- 大家好,我是一个JAVA初学者,想在这里记下自己学习过程中的点点滴滴,请多多关照
大家好,我是一个JAVA初学者,想在这里记下自己学习JAVA的点点滴滴,请多多关照. 以前一直在QQ空间里记录的,但感觉有些麻烦,而且有些东西自己理解的并不完善甚至都不正确,现在开始在这里重新记录,从 ...
- P3369 【模板】普通平衡树FHQtreap
P3369 [模板]普通平衡树(Treap/SBT) 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除x数(若有多个相同的数,因只删除一个) 查询 ...
- [python学习篇][廖雪峰][1]高级特性--列表生成式
>>> import os >>> [d for d in os.listdir(r"d:\temp")] ['0.png', '0.xml', ...
- 利用Python访问Mysql数据库
首先要明确一点,我们在Python中需要通过第三方库才能访问Mysql. 有这样几种方式:Mysql-python(即MySQLdb).pymysql.mysql-connector.Mysql-py ...
- 【bzoj2467】[中山市选2010]生成树 矩阵树定理
题目描述 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角形圈的中心的圈 ...
- 性能学习之六---socket接口测试
socket协议较底层,所以是一个万能协议.socket发的是数据包,所以较难看懂. 下面我们来讲解socket接口测试. 大致思路为:新建sever端和client端---建立连接---发送数据 一 ...
- 【Luogu】P2602数字计数(数位DP)
题目链接 数位DP好喵啊.自己yy两个小时的dfs:题解40行代码=10WA:10A. md而且还不是完全理解题解是什么意思. 所以放题解链接. #include<cstdio> #inc ...
- HDU-2768 Cat vs. Dog
题意一开始是理解错的...结果就各种WA啦~ 对于两个观众,假如有某只宠物,一个人讨厌另一个人却喜欢,这两个人就是有矛盾的,连边. 最后求最小顶点覆盖.因为把这个覆盖点集去掉的话剩下的图中没有两个点是 ...
- 模拟tap事件和longTap事件
移动端模拟tap和longTap事件,基本原理就是在touchstart和touchend事件中,计算触摸的位移和时间差,位移在一定范围内(轻微滑动),时间小于150ms为tap事件,时间大于300m ...