配置运行环境:Android Studio,我已经在电脑上安装了ndk,所以下面操作是在安装了ndk的前提下进行的。

前面几篇讲的都是在eclipse下配置和运行Jni程序,那么在Android Studio中又是如何配置和运行Jni程序呢,下面给简单说下怎样在Android Studio中引入Jni程序。

第一步,在Java层添加native接口,代码如下所示:

 public static native String getStringFromNative();

第二步,使用javah生成对应的头文件。java层native接口添加完成后。

首先,点击Build->Make Project,如下图所示

然后,点击"View->Tool Windows->Terminal",即在Studio中进行终端命令行工具.执行如下命令生成c语言头文件,进入JniDemo\app\build\intermediates\classes\debug>路径下,添加如下操作命令

javah -jni example.vince.jnidemo.JniUtils
执行完之后你可以在文件夹JniDemo\app\build\intermediates\classes\debug下看见生成的 .h头文件为:
example_vince_jnidemo_JniUtils.h
第三步,添加对应的.cpp文件。

将刚生成的.h文件剪切到main目录下的jni目录中,如果jni文件夹不存在则重新建一个jni文件夹,在jni目录下新建一个c文件,随意取名,我的叫example.vince.jnidemo.JniUtils.cpp ,然后添加对应接口的实现代码:

#include "example_vince_jnidemo_JniUtils.h"#include <android/log.h>#define LOG_TAG "Vince"#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)JNIEXPORT jstring JNICALL Java_example_vince_jnidemo_JniUtils_getStringFromNative        (JNIEnv * env, jclass jclas){    LOGE("log from ndk.");    return env->NewStringUTF("hello Jni");}

第四步,NDK配置,项目中有三处地方需要进行配置。

首先,在local.properties中配置NDK路径,如下图所示:


然后,在app\build.gradle中添加如下代码,


最后,在gradle.properties文件中添加如下代码,

android.useDeprecatedNdk=true

第五步,在java层中引入生成的.so库,代码如下

static {        System.loadLibrary("jnidemo");//defaultConfig.ndk.moduleName    }
这时,再执行"Build->Rebuild Project",就可以编译出so文件了。


我在编译过程中出现了两个问题,

第一个错误Error: NDK integration is deprecated in the current plugin,出现这个问题是因为没有在gradle.properties中添加android.useDeprecatedNdk=true。

第二个错误Execution failed for task ':app:compileDebugNdk'. Error Code:2,在网上搜索说是在Windows下NDK一个bug,当仅仅编译一个文件时出现会出现此问题,解决方法就是再再往jni文件夹加入一个空util.c文件即可。


jniDemo:http://download.csdn.net/detail/u012350993/9431264


更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 一款常用的 Squid 日志分析工具
  3. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  4. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  5. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  6. Android(安卓)Studio 的 build 过程
  7. Android之AVD中data目录问题
  8. android常用控件(一)- TextView、EditView、Button、Menu
  9. Android:创建可穿戴应用 - 打包发布

随机推荐

  1. android使用HTTP协议读取数据
  2. ImageView
  3. Android Service实现闹钟
  4. android 文档路径获取
  5. Android OTA 升级之二:脚本 ota_from_targ
  6. Android studio 页面布局无法显示问题
  7. Ubuntu amd64 running Android SDKs and
  8. Android tips tool 发现的性能问题
  9. Android软键盘用法实例
  10. Android之SharedPreferences权限