Android Jni开发之Android Studio中创建Jni程序
2016-02-14 16:34
387 查看
配置运行环境:Android Studio,我已经在电脑上安装了ndk,所以下面操作是在安装了ndk的前提下进行的。
前面几篇讲的都是在eclipse下配置和运行Jni程序,那么在Android Studio中又是如何配置和运行Jni程序呢,下面给简单说下怎样在Android Studio中引入Jni程序。
第一步,在Java层添加native接口,代码如下所示:
第二步,使用javah生成对应的头文件。java层native接口添加完成后。
首先,点击Build->Make Project,如下图所示
然后,点击"View->Tool Windows->Terminal",即在Studio中进行终端命令行工具.执行如下命令生成c语言头文件,进入JniDemo\app\build\intermediates\classes\debug>路径下,添加如下操作命令
将刚生成的.h文件剪切到main目录下的jni目录中,如果jni文件夹不存在则重新建一个jni文件夹,在jni目录下新建一个c文件,随意取名,我的叫example.vince.jnidemo.JniUtils.cpp ,然后添加对应接口的实现代码:
第四步,NDK配置,项目中有三处地方需要进行配置。
首先,在local.properties中配置NDK路径,如下图所示:
然后,在app\build.gradle中添加如下代码,
最后,在gradle.properties文件中添加如下代码,
第五步,在java层中引入生成的.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
前面几篇讲的都是在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
相关文章推荐
- Android快速开发(1)
- android studio NDK编程
- IIS7上设置MIME让其支持android和Iphone的更新下载
- Xamarin.Android 如何使用圆形Image
- android 自带图库
- Android开发中一些被冷落但却很有用的类和方法
- android 开发 命名规范
- Android琐碎知识点,不断更新中
- Android开发:Translucent System Bar 的最佳实践
- Android之RecyclerView简单使用(二)
- Android JSON解析
- Android消息处理系统原理简要概述
- ANDROID_MARS学习笔记_S01原始版_009_下载文件
- Android电话事件案例
- android开发中英文切换
- android:giavity和layout_gravity的区别
- Android类参考---Fragment
- 让动画不再僵硬:Facebook Rebound Android动画库介绍
- 看Android开发笔记之:消息循环与Looper的详解有感
- Android 接入支付宝支付只需十分钟