Android Studio下的JNI开发(一):NDK的配置

今天发送两篇基础的JNI开发和配置的文章,可能大家很多都在应用层开发,但是我感觉JNI的基础配置和原理开发大家有必要了解一下,就推送两篇非常基础,大家都能看懂的文章,如果大家感觉现在用不到,可以稍微看两眼了解一下基础过程,对大家未来可能会有帮助。

随着Android Studio的推出,越来越多的开发者都把项目从Eclipse迁移到了Android Studio上,说明Android Studio相对Eclipse来说,具有很明显的优势。同样对于JNI开发来说,Android Studio的配置比Eclipse要简单了许多。本篇主要介绍下Android Studio的下JNI开发配置。

一、直接使用.so库

和eclipse不同,.so库是放到jniLibs目录下面,如图:

使用方式和Eclipse中一样,直接使用System.loadLibrary("libName")加载库。

二、使用C/C++源码

1.下载安装配置NDK

首先是下载NDK,可以自己下载NDK,然后解压出来,然后指定NDK目录,在local.properties文件中配置NDK的路径,如图:

你也可以在Android Studio中设置一下,让Android Studio自己下载对应版本的NDK。步骤如下:

● 在菜单栏找到"File"-"Settings",打开设置界面;

● 找到"Appearance & Behavior"-"System Settings"-"Android SDK"选项,然后切换到"SDK Tool"选项卡;

● 然后找到NDK打钩;

● 点击"Apply"按钮,然后在弹出窗口中点击"OK",即可自动下载;

● 等待自动下载安装完成,点击"Finish"按钮完成安装。

如下图所示:

Android Studio默认安装NDK目录是在SDK目录下,安装完成后,local.properties文件中NDK路径设置也将自动更新。

2.Gradle添加NDK模块

打开app模组下的build.gradle文件,在defaultConfig模块下添加ndk模块,如图:

其中moduleName是编译的.so的模组名称,就是原先Eclipse开发里Android.mk文件中LOCAL_MODULE变量,和System.loadLibrary()加载.so时的名称对应。例如moduleName配置为"JniTest",则.so文件名称为"libJniTest.so",加载时,名称为System.loadLibrary("JniTest");

abiFilters指定要分配的平台,如果未指定,则将编译所有支持的平台。目前支持的平台有"armeabi"、"armeabi-v7a"、"arm64-v8a"、"mips"、"mips64"、"x86"、"x86_64"这七个;

ldLibs是要链接的库,就是原先Android.mk里LOCAL_LDLIBS变量指定的库。

3.添加C/C++文件

默认情况下,C/C++文件一般放在[module]/src/main/jni/目录下,如图:

当然,你也可以修改build.gradle配置,指定其他路径。在"android.sourceSets.main"模块里,使用"jni.srcDirs"指定jni的路径,如下图:

至此,Android Studio下开发JNI的基本配置就结束了,下一篇将介绍一下Android Studio下C/C++代码编写与编译。

原文发布于微信公众号 - 非著名程序员(non-famous-coder)

原文发表时间:2016-06-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 14.04上安装CouchDB和Futon

Apache CouchDB,类似Redis,Cassandra和MongoDB,是一个NoSQL数据库。CouchDB将数据存储为JSON文档,这些文档本质上...

31110
来自专栏青玉伏案

JavaEE开发之SpringMVC中的静态资源映射及服务器推送技术

在上篇博客中,我们聊了《JavaEE开发之SpringMVC中的自定义拦截器及异常处理》。本篇博客我们继续的来聊SpringMVC的东西,下方我们将会聊到js、...

24960
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装Bacula-Web

Bacula-Web是一个PHP Web应用程序,它提供了一种查看已经运行的Bacula备份作业的摘要和图形的简便方法。虽然它不允许您以任何方式控制Bacula...

20520
来自专栏小狼的世界

Fedora 11 的安装以及 LAMP环境的搭建(二)

        Windows下的同事,很多都使用winrar来压缩和传输文件,所以这个也是不可或缺的,提供对于rar压缩格式的支持

11630
来自专栏Jerry的SAP技术分享

使用Eclipse进行PHP的服务器端调试

最近工作需要对PHP的服务器端代码进行远程调试,涉及到Eclipse里环境的设置。在网上找了很多资料,大多不全,或者缺少配图,于是把自己做的过程中遇到的问题记录...

14020
来自专栏运维技术迷

连仕彤博客yum报错:No module named gzip解决

起因 小威wei yum update了一把,结果yum就报错了,Python版本并没有升级,依然是2.7.5版本。 报错信息 [root@localhost ...

42940
来自专栏应用案例

SSM框架搭建

ssm框架的学习小结,主要是初期环境的搭建配置以及信息的交互处理过程,非技术人员请绕道~ SpringMVC其实就是Spring框架的一个模块,是一个基于MVC...

509100
来自专栏子勰随笔

iMac上RubyGems相关的问题汇总

原因就是字面意思的原因, gem 要往目录/usr/bin写文件但是权限不够. 因为此时使用的是系统自带的 ruby, 他会在尝试往系统库中安装内容。有时候即使...

18610
来自专栏Java后端技术栈

使用Spring Session和Redis解决分布式Session跨域共享问题

对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash、轮训、根据权重、随机等。不管对于哪一种负载均衡算法,由于Nginx对不同的...

32120
来自专栏程序猿DD

Spring Boot应用的后台运行配置

酱油一篇,整理一下关于Spring Boot后台运行的一些配置方式。在介绍后台运行配置之前,我们先回顾一下Spring Boot应用的几种运行方式: - 运行S...

53460

扫码关注云+社区

领取腾讯云代金券