最近看了下Jni的配置与使用,因此写个Demo练习一下。在Android Studio里面,编写Jni,使用so还是非常方便的。参考文章:http://www.jianshu.com/p/d8cde65cb4f7,感谢作者的分享~
NDK下载配置
1、在Android Studio里面先下载NDK。可能需要翻墙,如果下载失败,可以尝试去网络上找找。
2、配置NDK环境
好啦,这样,NDK环境就算配置完成了。
建立NdkJniDemo项目
1、新建立工程NdkJniDemo。
2、建立一个JniUtil.java类:
然后Clean Project,Rebuild Project,之后,你就能在项目的路径:app/build/intermediates/classes/debug 看到 com.xyzlf.jni.demo.JniUtil.class
以上操作如果没有问题的话,就会生成com_xyzlf_jni_demo_JniUtil.h文件。在项目的src/main下面建立一个jni文件夹,将生成的com_xyzlf_jni_demo_JniUtil.h文件拷贝进去。
在jni文件夹里面,新建一个与.h对应的.c文件,名字可以随便,我取得名字为:JniUtil.c,加入以下代码:
3、Jni类的配置及引用
在项目app下的build.gradle下面配置ndk:
在JniUtil里面引用”NdkJniDemo”,记住需要跟上面gradle里面配置的名字一致,否则会找不到,完整代码如下:
在MainActivity中调用:
如果build过程中失败的话,在gradle.properties加入配置
以下是运行效果图:
工程目录结构:
至此就完成了。
项目中引用so
以上项目编译完后,可以在app/build/intermediates/ndk/debug/lib下面找到生成的so:
将这几个so,拷贝至app/src/main/jniLibs目录下:(如果没有jniLibs目录,新建一个),这样就直接引用so,可以将,jni文件下面的.h,.c文件删除了。
ERROR
解决方案,在buil.gradle里面添加:ldLibs “log”//实现__android_log_print
完整的build.gradle如下:
完整项目地址
完整的项目地址:https://github.com/xyzlf/JniDemo