今天花了8个小时,终于把这该死的环境搭好了。现在记录一下。
最后面会给出整个项目。
首先放上抄袭链接:先感谢这位大神
http://yanbober.github.io/2015/02/14/android_studio_jni_1/
注意:建议大家完全模仿这位大神的写法,包括包名什么的,这样有错误也可以及时发现。
我的环境是:
Android Studio 1.5 for windows
android-ndk-r12-beta1
JDK 1.8.0_40
基本抄袭那位大神的,再加上自己的一些修改
第一步
第二步
第三步,Make project(Ctrl + F9),
这样就会生成.class文件,
第四步 我们要用刚刚生成的class文件,利用javah 生成jni对应的 .h头文件
D:\AndroidStudioProjects\Jni03>cd app\build\intermediates\classes\debug
D:\AndroidStudioProjects\Jni03\app\build\intermediates\classes\debug>javah -jni io.github.yanbober.ndkapplication.NdkJniUtils
这样就生成了.h文件
第五步,生成后的.h文件的内容如下:
第六步,在src 的main目录下,建一个jni文件夹,可以通过 鼠标右击main->new->Folder -> JNI Folder 生成,然后把刚刚弄好的.h文件剪切过来
第七步,在这个jni文件夹中 新建一个 c文件,取名为jnitest.c:
注意(一定要注意这两种写法,我刚刚就在cpp文件里面写了c的代码,结果死活不知道原因,还是查了写网上这位大哥的提示才知道的:http://hepeng421.blog.163.com/blog/static/11948517201402344215411/):
1、使用c++来写代码,文件名就必须【cpp】后缀:
返回结果:return env->NewStringUTF((char *)“Hello from JNI !”);//C++用这种格式
2、使用c来写代码,文件名就必须【c】后缀:
返回结果:return (*env)->NewStringUTF(env, “Hello from JNI !”);//如果是用C语言格式就用这种方式
第八步:
第九步:
第十步:也是那个大神没有写的,但是我的电脑出现了这个问题。
android.useDeprecatedNdk=true
完成了这些操作,我就可以跑这个获取到c文件中的数据了。。哈哈!!
最后说一句,不知道是不是 某度 有毒还是怎么回事,找了七个小时的资料,死活找不到 可以运行的。。 还是 Google 了一下,然后就找到了那位大神写得文章,然后经过一番操作就运行成功了。。
Demo链接:http://download.youkuaiyun.com/detail/chang_1134/9570206