Android Studio NDK环境配置与JNI简单的例子
2017-10-13 11:34
369 查看
1.Android Studio 配置NDK非常简单,这里简单的介绍使用2.2.2版本配置NDK。
下载NDK,file->setting->Appearance->system Settings->Android SDK->SDK Tools中点击下载即可。如图下图所示:
2.新建工程项目,测试jni开发
3.设置支持jni
打开gradle.properties在里面添加android.useDeprecatedNdk=true
在local.properties在里面添加android里面添加
ndk.dir = NDK路径
sdk.dir = SDK路径
ndk.dir=D:\android-ndk-r10e
sdk.dir=E:\AndroidStudio\Android_Sdk
4.在那个module中的build.gradle中的android/defaultConfig下面添加ndk配置
5.新建java访问C层的接口类,创建一个Jni的工具类,并定义接口函数,函数关键字使用native。
6.生成头文件,build project 可以在app的build/intermediates/classes/debug中看到编译好的.class源文件。
7.打开终端Terminal 在里面通过命令生成.h文件
cd app/build/intermediates/classes/debug/
javah com.qihancloud.jnidemo.JniUtils(工具类的名称)
8.在module中的main目录下通过鼠标右键new->folder->jni folder
将编译生成的.h文件拷贝到jni文件下面,新建.c文件
9.如何生成so文件:
在jni文件夹中新建Android.mk文件
在jni文件家中新建Application.mk文件
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions -std=c++0x
APP_ABI := armeabi-v7a x86 armeabi
APP_PLATFORM := android-18
在Terminal终端中,定位到module所在的目录,命令ndk-build编译会自动生成.so库文件,如下图所示:
10.相关的结构目录:
11.测试的时候,记得在工具类中添加
整个工具类代码:
12.具体的调用,如下代码所示:
13.喜欢的朋友欢迎点赞,请大家多多指教。
下载NDK,file->setting->Appearance->system Settings->Android SDK->SDK Tools中点击下载即可。如图下图所示:
2.新建工程项目,测试jni开发
3.设置支持jni
打开gradle.properties在里面添加android.useDeprecatedNdk=true
在local.properties在里面添加android里面添加
ndk.dir = NDK路径
sdk.dir = SDK路径
ndk.dir=D:\android-ndk-r10e
sdk.dir=E:\AndroidStudio\Android_Sdk
4.在那个module中的build.gradle中的android/defaultConfig下面添加ndk配置
ndk { moduleName "So库的名字" } 在build.gradle中的android下面添加 sourceSets{ main{ jniLibs.srcDirs = ['libs'] } }
5.新建java访问C层的接口类,创建一个Jni的工具类,并定义接口函数,函数关键字使用native。
6.生成头文件,build project 可以在app的build/intermediates/classes/debug中看到编译好的.class源文件。
7.打开终端Terminal 在里面通过命令生成.h文件
cd app/build/intermediates/classes/debug/
javah com.qihancloud.jnidemo.JniUtils(工具类的名称)
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_qihancloud_jnidemo_JniUtils */ #ifndef _Included_com_qihancloud_jnidemo_JniUtils #define _Included_com_qihancloud_jnidemo_JniUtils #ifdef __cplusplus extern "C" { #endif /* * Class: com_qihancloud_jnidemo_JniUtils * Method: getStringFromC * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_qihancloud_jnidemo_JniUtils_getStringFromC (JNIEnv *, jclass); /* * Class: com_qihancloud_jnidemo_JniUtils * Method: getAdd * Signature: (II)I */ JNIEXPORT jint JNICALL Java_com_qihancloud_jnidemo_JniUtils_getAdd (JNIEnv *, jclass, jint, jint); #ifdef __cplusplus } #endif #endif
8.在module中的main目录下通过鼠标右键new->folder->jni folder
将编译生成的.h文件拷贝到jni文件下面,新建.c文件
#include "com_qihancloud_jnidemo_JniUtils.h" JNIEXPORT jstring JNICALL Java_com_qihancloud_jnidemo_JniUtils_getStringFromC (JNIEnv *env, jclass) { return env->NewStringUTF("Welcome to from C++"); } JNIEXPORT jint JNICALL Java_com_qihancloud_jnidemo_JniUtils_getAdd (JNIEnv *env, jclass obj, jint num1,jint num2) { return num1+num2; }
9.如何生成so文件:
在jni文件夹中新建Android.mk文件
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := JniDemo //so库的名字 LOCAL_SRC_FILES := com_qihancloud_jnidemo_JniUtils.cpp include $(BUILD_SHARED_LIBRARY)
在jni文件家中新建Application.mk文件
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions -std=c++0x
APP_ABI := armeabi-v7a x86 armeabi
APP_PLATFORM := android-18
在Terminal终端中,定位到module所在的目录,命令ndk-build编译会自动生成.so库文件,如下图所示:
10.相关的结构目录:
11.测试的时候,记得在工具类中添加
static { System.loadLibrary("JniDemo"); }
整个工具类代码:
public class JniUtils
{
public static native String getStringFromC();
public static native int getAdd(int a,int b);
static { System.loadLibrary("JniDemo"); }
}
12.具体的调用,如下代码所示:
public class MainActivity extends AppCompatActivity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i("Jnidemo", JniUtils.getStringFromC()); Log.i("Jnidemo", JniUtils.getAdd(3,4) + ""); textView = (TextView) findViewById(R.id.textview); textView.setText(JniUtils.getStringFromC()); } }
13.喜欢的朋友欢迎点赞,请大家多多指教。
相关文章推荐
- Android Studio NDK环境搭建与最简单例子编译执行
- JNI学习一(AndroidStudio NDK环境配置)
- Android Studio NDK环境配置及JNI使用方法
- android-studio下ndk的配置和简单JNI调用遇到的问题
- Android Studio NDK环境配置和JNI的使用
- Android Studio NDK开发之环境配置和简单实例
- android Jni NDK开发环境搭建及其简单实例的编写
- Android Studio Jni环境配置 - 记录
- NDK开发环境配置-AndroidStudio
- 【android 开 发 】 - Android studio 下 NDK Jni 开发 简单例子
- android(NDK+JNI)---NDK开发 环境配置
- 【android 开 发 】 - Android studio 下 NDK Jni 开发 简单例子
- android NDK/JNI环境配置及实例开发流程
- AndroidStudio NDK-JNI简单实例
- Android Studio JNI/NDK 编程(二) Windows 下环境搭建 demo 开发
- Android中JNI使用详解(2)---Android Studio中NDK环境配置
- Android studio ndk环境配置
- android Jni NDK开发环境搭建及其简单实例的编写
- Android JNI开发之NDK环境配置(eclipse)
- Android Studio使用新的Gradle构建工具配置NDK环境