基于android studio1.4 gradle 2.5
一名苦逼的程序员,花了一天时间查找各种资料,学习前辈教程,终于跑成功了第一个jni程序,将过程记录下来,加深印象。
具体步骤
再次之前请先下载NDK
1.新建一个android程序起名 AndroidJniTest。
2.java代码下新建名为ndk的文件夹,新建类NdkTest.class,里面是我们要调用的jni本地方法
添加上面信息之后,编辑器会提示我们Sync我们的Gradle 点击编译之后,出现一个错误:
Error:(15, 0) Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.
<a href="openFile:D:\AndroidStudioProject\AndroidJniTest2\app\build.gradle">Open File</a>
ok我们按照错误的提示来在 gradle.properties文件中加入 android.useDeprecatedNdk =true 再次Sync 错误没有了
4.接下来要编译我们.h文件了 build一下我们项目在我们项目的\AndroidJniTest2\app\build\intermediates\classes\debug 目录下会出现我们需要的NdkTest.class文件 我们可以直接用Studio的terminal 命令行窗口进到上面的路径下 cd AndroidJniTest2\app\build\intermediates\classes\debug 执行javah -jni lx.com.androidjnitest2.ndk.NdkTest 完成之后会生成我们需要的lx_com_androidjnitest2_ndk_NdkTest.h 文件。如下
5.在main文件下创建jni文件夹。将上面生成的.h文件复制到jni文件夹下面,继续在jni下面创建一个JniTest.c的文件 文件名字 无要求,学过C语言的同学都知道.h为头文件,定义我们的方法.c文件来实现。文件如下
这里只是返回一直String。完成之后我们点击编译,又出现了错误:
Error:Execution failed for task ':app:compileDebugNdk'.
> NDK not configured.
Download the NDK from http://developer.android.com/tools/sdk/ndk/.Then add ndk.dir=path/to/ndk in local.properties.
(On Windows, make sure you escape backslashes, e.g. C:\\ndk rather than C:\ndk)
不得不说AS的强大,提醒很方便,它告诉我们要先下载NDK 然后配置我们的路径,OK我们把第一步上面下载的NDK目录配置到 local.properties中就可以了,这个文件中有我们SDK的路径,依照它配好就OK了
编译过后在AndroidJniTest2\app\build\intermediates\ndk\debug\lib 目录会生成我们在第3步中配置的3个文件 并且在文件下 有我们需要的.so文件
6.接下来就是调用我们的jni了在我们的mainActivity下面调用.
运行我们的程序:
OK我们第一个调用JNI的程序运行成功。
demo下载地址点击打开链接