您的位置:首页 > 移动开发 > Android开发

Android Studio进行Jni应用开发

2016-08-15 20:35 375 查看
Android studio是谷歌推出的新一代Android应用开发工具,随着Android studio的版本的稳定性的逐步提高,越来越多的开发者开始投入到Android studio的怀抱;毋庸置疑,Android studio确实较eclipse高效了不少。Jni开发无论是在eclipse中还是在Android studio中都支持的很不好,因此这部分的环境搭建,包括后期的调试(基本都是靠看打印信息)等都是很让各个开发者比较头疼的,本篇就Android studio下进行jni本地应用的开发小经验与大家分享一下。

首先声明一下工具的版本,文章使用的版本是Android studio2.0。Android studio在project构建中本身是支持本地代码c/c++的构建的,即Gradle sync的过程中会对C/C++代码进行编译处理,只是配置相对麻烦一些,与之前eclipse中的方法有很大不同。OK,首先说一下如何使用Android studio来构建本地c/c++代码。

1.      建立JniJava.java,创建本地接口并加载本地库。

2.      使用javah文件生成c头文件。(后面会介绍如何简单方便的一键生成头文件)

3.      编写.c或cpp文件,实现相应的本地接口。

4.      gradle.properties中添加android.useDeprecatedNdk=true

5.      local.properties中添加NDK路径ndk.dir=D\:\\Tools\\android-ndk-r10b(NDK所在路径中不可以有空格或中文),当然也可通过file->other setting->Default setting structure进行设置。

6.      在项目所在模块的build.gradle中(非工程的,默认为App目录下的build.gradle文件)的defaultConfig中添加ndk的配置信息

ndk {
moduleName "serial_port"//NDKlibrary的名字
ldLibs "log"//添加链接库
abiFilters "armeabi" //设定目标abi
}


7.      Sync一下,让Androidstudio帮你搞定其他的事情吧,Android studio会自动为你生成相应的.mk文件并进行编译,如果有错误出现会做出提醒,不得不吐槽,Android studio给出的错误提示有时候真的很蛋疼。

 

Ok,也许有人觉得Android studio做这件事还不太靠谱,当然还有其他的方式来进行jni应用开发。下面就介绍一种直接通过ndk工具手动编译生成so文件,然后通过Android studio打包成应用的方法,在说这种方式的实现之前,先给大家介绍如果通过配置Android studio扩展工具实现一键javah头文件生成,一键ndk编译即清除的实现方式。

依次打开File->Settings->Tools->External Tools

1.      Javah头文件生成

添加一项扩展工具,取名javah,配置如下图所示



1.      一键ndk编译

添加一项扩展工具,取名ndk- build,配置如下图所示



1.      一键ndk清除

添加一项扩展工具,取名ndk- clean,配置如下图所示



OK,通过上面的配置,我们就可以轻松本地方法的c/c++头文件生成以及Ndk编译了。

下面介绍如何实现手动编译ndk。还是一步一步的讲。

1.      建立JniJava.java,创建本地接口并加载本地库。

2.      使用Android studio创建的新建菜单创建jni目录。

3.      使用javah文件生成c头文件。(后面会介绍如何简单方便的一键生成头文件)

4.      编写.c或cpp文件,实现相应的本地接口。

5.      local.properties中添加NDK路径ndk.dir=D\:\\Tools\\android-ndk-r10b

6.      在项目所在模块的build.gradle中(非工程的)android节点下添加类似以下配置

sourceSets{
main {
jni.srcDirs = [] //此处必须如此设置
jniLibs.srcDir "src\\main\\libs"
}
}


7.      设置中把jni.srcDirs设置为空就是明确的告诉构建工具,此项目没有jni目录。否则Android studio工具会自动扫描c/cpp文件,如果发现有jni目录并有c/cpp文件,就会报错,要求完善配置,当然,就是上面说的那些后续的配置。当然,Android studio中,如果你的工程视图为Android的话,因为你屏蔽了jni源码目录,所以此处你是看不到该文件夹的,当然这也不是事,切换到project目录下,基本什么你都可以看到了。

jniLibs.srcDir是用来配置jni库路径的,做此配置后,在打包软件时会把相应的本地so库打包到应用中去。

后续你就可以通过ndk编译本地代码,然后在build生成应用了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android android studio jni