Android Studio第一个jni程序

基于android studio1.4 gradle 2.5


一名苦逼的程序员,花了一天时间查找各种资料,学习前辈教程,终于跑成功了第一个jni程序,将过程记录下来,加深印象。


具体步骤

再次之前请先下载NDK 

1.新建一个android程序起名 AndroidJniTest。

2.java代码下新建名为ndk的文件夹,新建类NdkTest.class,里面是我们要调用的jni本地方法


3.在我们的builde.gradle文件下的defaultConfig中添加我们的NDK信息 


添加上面信息之后,编辑器会提示我们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下载地址点击打开链接

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值