Android Studio2.0搭建NDK环境
2016-05-24 10:28
344 查看
现在使用Ndk开发的场景还蛮多,游戏引擎、音视频开发等都能涉及到,以前的工程大部分都是Eclipse的工程目录,但是App开发现在大部分都是在AndroidStudio开发工具中进行的,那就有个问题了?怎么在As中搭建Ndk的环境呢。这就是本篇文章所要解答的,并且会创建一个小例子,编译成.so文件,且在项目中使用。Come on….
在没具体动手之前我们想一想怎么实现比较好吧,假如我们新建一个As2.0的工程,然后按照他的目录结构把jni层文件放到指定的目录下,然后进行开发,固然可行,可行是可行,但是代价就是Sdk开发和Ndk开发就分离了,不在一个工程目录下,不符合我们的预期,那就换种思路吧。庆幸的是,As的gradle脚本功能比较强大,可以指定源码文件,操作任务等。如果只是修改一下配置文件,就把事情给做好了,那岂不是皆大欢喜。好吧 开始做了。
首先在工程Module的src目录下新建一个jni目录(存放我们的c、c++源码及mk文件)
然后最关键的是要在build.gradle配置一下说明jni里面的代码是咱们的ndk编译代码位置,及做一些编译任务的处理 下面配置代码由 成都 小妖 提供,特别感谢他
?
注意上面的有一个变化的地方就是jni的路径在哪,src/jni 如果跟我不一样的,应该写你的具体位置
然后在我们的代码中添加一个Native方法,就让他打印一个helloworld吧
然后使用javah命令 生成对应的.h头文件
这样会在下面目录生成2个文件,当然下面的那个文件不用管它了
然后把生成的这俩文件放到刚才创建的jni里面
下面就是编写cpp文件和Android.mk Application.mk文件了
.h文件代码
?
.cpp文件代码
?
注意新建写的时候 一定要加上
?
然后写咱们的mk文件,先来Android.mk
?
要改的地方是咱们的module名称和源文件列表 这里根据自己的代码设置就好了
接下来Application.mk
?
设置了全平台,当然不设置也可以 默认就行了
点击这个按钮 开始编译
编译成功会在src目录下生成一个libs和obj.local目录
然后就生成了咱们命名的liblalala.so文件 格式为lib{模块名}.so
下面是怎么在代码中使用咱们生成的.so文件了
把我们的编译生成好的.so文件拷贝到代码的libs中armeabi目录下
然后是在我们的代码中使用它
?
注意load的时候写模块名 不是文件名 这里是lalala 然后在MainActivity里面调用这个printHelloworld方法
打印一下log
好了到这里在As2.0中搭建Ndk环境并且编译so文件,并使用so文件的介绍已经讲完了,后面会在这个基础上编译一些音视频模块的代码,然后封装使用。期待吧。。。
build.gradle全部配置查看
?
在没具体动手之前我们想一想怎么实现比较好吧,假如我们新建一个As2.0的工程,然后按照他的目录结构把jni层文件放到指定的目录下,然后进行开发,固然可行,可行是可行,但是代价就是Sdk开发和Ndk开发就分离了,不在一个工程目录下,不符合我们的预期,那就换种思路吧。庆幸的是,As的gradle脚本功能比较强大,可以指定源码文件,操作任务等。如果只是修改一下配置文件,就把事情给做好了,那岂不是皆大欢喜。好吧 开始做了。
首先在工程Module的src目录下新建一个jni目录(存放我们的c、c++源码及mk文件)
然后最关键的是要在build.gradle配置一下说明jni里面的代码是咱们的ndk编译代码位置,及做一些编译任务的处理 下面配置代码由 成都 小妖 提供,特别感谢他
?
然后在我们的代码中添加一个Native方法,就让他打印一个helloworld吧
public native void printHelloworld();
然后使用javah命令 生成对应的.h头文件
这样会在下面目录生成2个文件,当然下面的那个文件不用管它了
然后把生成的这俩文件放到刚才创建的jni里面
下面就是编写cpp文件和Android.mk Application.mk文件了
.h文件代码
?
?
?
?
接下来Application.mk
?
点击这个按钮 开始编译
编译成功会在src目录下生成一个libs和obj.local目录
然后就生成了咱们命名的liblalala.so文件 格式为lib{模块名}.so
下面是怎么在代码中使用咱们生成的.so文件了
把我们的编译生成好的.so文件拷贝到代码的libs中armeabi目录下
然后是在我们的代码中使用它
?
打印一下log
好了到这里在As2.0中搭建Ndk环境并且编译so文件,并使用so文件的介绍已经讲完了,后面会在这个基础上编译一些音视频模块的代码,然后封装使用。期待吧。。。
build.gradle全部配置查看
?
相关文章推荐
- Android NDK开发之:配置环境的详解
- Android开发的IDE、ADT、SDK、JDK、NDK等名词解释
- Android提高之使用NDK把彩图转换灰度图的方法
- 探讨:如何在NDK中呼叫Java的class
- Android App 增量更新实例(Smart App Updates)
- 每周总结20130814——Android NDK环境的搭建和使用,YUV420SP格式图像的处理
- Mac下用Android Studio运行NDK samples
- 用Android Sutdio调试NDK
- Android NDK开发简介
- Android NDK开发之Jni的数据类型
- Android NDK开发之数组类型的操作
- Android NDK开发之Jni调用Java对象
- Getting Started With the NDK(Pro Android Apps Performance Optimization)
- Advanced NDK(Pro Android Apps Performance Optimization)
- Android新版NDK环境配置(免Cygwin)
- android ndk 怎样调用第三方的so库文件
- Android 开发 ndk相关问题
- Android: NDK编程入门笔记
- windows下eclipse搭建android_ndk开发环境