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

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代码

#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中命名的库名一致

很多问题还不知道解决的原理是什么,欢迎大家指教
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息