android-studio下ndk的配置和简单JNI调用遇到的问题
2016-03-16 19:22
501 查看
最近在学习简单的JNI的调用,但由于我看的视频教程是用eclipse作为IDE的,而我用的是android studio1.5,所以过程中遇到的一些问题(刚刚入门,各种问题很困扰啊!)
所以来分享一下我的解决方法
studio下NDK的配置:请看这篇文章: https://segmentfault.com/a/1190000003999352 (有图,解释的挺详细的,我按这个弄得,成功了)
接下来就是写代码过程中的问题了(代码不多,先将就着看吧(还没用过markdown编辑器
))
这是会被调用的C代码
注意 Java一定要大写,后面是java调用(public native。。。)c函数的方法名所在
的路径(注意:路径一定要正确,最后的方法名和java中调用使用的方法名要完全一致,
否则会爆找不到native方法的错误)
c代码有时也是红色报错也一样可以正确运行(这个报错真是无奈的,搞了很长时间才发现,原来可以直接运行)
有时要在jni中在建一个空的.c文件才能编译通过
这是在java文件中调用C的代码
注意c函数库的导入要和build-gradle中命名的库名一致
很多问题还不知道解决的原理是什么,欢迎大家指教
所以来分享一下我的解决方法
studio下NDK的配置:请看这篇文章: https://segmentfault.com/a/1190000003999352 (有图,解释的挺详细的,我按这个弄得,成功了)
接下来就是写代码过程中的问题了(代码不多,先将就着看吧(还没用过markdown编辑器
))
这是会被调用的C代码
#include "Hello.h" #include <stdio.h> #include <jni.h> jstring Java_com_example_gw_helloworldfromc_MainActivity_helloWorldFromC(JNIEnv* env,jobject obj){ return (*env)->NewStringUTF(env,"hello-world-from-c"); }
注意 Java一定要大写,后面是java调用(public native。。。)c函数的方法名所在
的路径(注意:路径一定要正确,最后的方法名和java中调用使用的方法名要完全一致,
否则会爆找不到native方法的错误)
c代码有时也是红色报错也一样可以正确运行(这个报错真是无奈的,搞了很长时间才发现,原来可以直接运行)
有时要在jni中在建一个空的.c文件才能编译通过
这是在java文件中调用C的代码
static { System.loadLibrary("hello");//导入库,名字要一致 } public native String helloWorldFromC();//即便能正确编译运行这个方法名也是显示为红色(android studio1.5), 不用处理这个报错也能能正确运行,不知道为啥
注意c函数库的导入要和build-gradle中命名的库名一致
很多问题还不知道解决的原理是什么,欢迎大家指教
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题