AndroidStudio建立完整JNI开发工程流程及Java通过JNI调用C函数

许久没写博客了,小编最近在学校的安排下到了深圳简单地学习了解了Linux系统,回校之后就对Android的底层充满了无限的兴趣。回来后,我第一件事就是想试一下NDK的开发,首先我得迈出的第一步是通过JNI调用底层的C函数。本以为很简单的一件事,做起来却耗费了不少时间,走了不少的弯路。小编看了很多大牛的文章,照着他们的步骤来做,很多是弄不出来的,尝试了各种方法,最后我总结一个简单的开发流程,一方面给有兴趣的同胞学习,另一方面用以备忘,在之后的开发,作为工具资料来使用。 

关于那些基本的概念和原理,我这里不再一一介绍了,我直接讲操作流程就好了。 

  1、首先要下载好NDK的包,并且配置好环境变量  

2、新建一个工程  

3、在File=》Project Structe目录下把NDK的地址放进去  

4、在工程目录下的local.properties下把SDK和NDK地址配置好(这里的斜杠注意要转义),这里基本编译器会帮我们搞定。

ndk.dir=D\:\\android-ndk-r13b

sdk.dir=C\:\\。。。\\Android\\Sdk  

5、在你要调用C函数的类下边声明你要从C代码调用的函数,如  

public native String sayHello();  

6、接着打开AndroidStudio下边的终端(Termianal),把工作目录切换到src/main/java下,运行以下代码

javah -d ../jni 你的包名(全类名).引用本地方法的类的名称

Note:代码的含义是根据你声明的本地方法在上一级目录下生成一个jni的目录,以及在目录下生成一个相应的.h文件  

7、复制jni的主体结构,建立一个C文件  

8、接着,在App->build.grradle=> defaultconfig (项的后面加上)  

ndk {  

moduleName"myNativeLib"  

ldLibs "log", "z", "m"  

abiFilters "armeabi", "armeabi-v7a", "x86"}  

Note:这会生之后生成一个libmyNativeLib.so文件,以及相应三种硬件架构的文件夹及相对应的文件。  

9、在此点Build=>Make project,如果生成过的,就就Rebuild project  

10、完成编译、链接后可以在app=>build=>intermediate=>ndk=>debug=>lib下会有上边moduleName配置生成的.so动态链接库

11、最后,当然是加载动态链接库了,在public native函数声明的上方,用static加载动态链接库 如:(看自己生成的库来改!)

static {  

System.loadLibrary("myNativeLib");  

}  

12、最后,就可以在java上使用该函数了。  

好了,有关于整个流程就到此为止了,有点粗枝大叶,比较适合动手操练,具体里边的逻辑,概念,请自行翻阅相关的资料。 

欢迎交流学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值