Android Studio利用Gradle配置NDK环境-'Hello-JNI'

官方地址:http://tools.android.com

1 你需要做的

  • 更新你的Android studio到2.2或更高版本
  • 下载Android NDK version 11r或更高
  • 更新Android SDK Tools到最新版

2 创建测试项目

  1. 选择New Project然后一路Next之后Finish即可
  2. 配置项目使用gradle wrapper,如下图选择Use Default Gradle wrapper (recommended)即可
Android Studio利用Gradle配置NDK环境-'Hello-JNI'_第1张图片

3.下载NDK,如下图选择SDK Manager>SDK Tools>Android NDK(也可能叫NDK)

Android Studio利用Gradle配置NDK环境-'Hello-JNI'_第2张图片

4.点击按钮Sync Project>Make Project>Run,现在还看不到什么效果

3 更新Gradle文件

  1. 打开build.gradle(Project:XXX)文件,应该是类似下图
Android Studio利用Gradle配置NDK环境-'Hello-JNI'_第3张图片

我们需要替换

classpath 'com.android.tools.build:gradle:2.1.0'

classpath 'com.android.tools.build:gradle-experimental:0.7.2'

2.gradle-experimentalv0.7.0之后需要 gradle版本在2.10或更高,所以换需要打开gradle-wrapper.properties 文件进行修改(依版本而定,或许你并不需要更改)
替换

distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip

distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip

3.修改build.gradle (Module: xxx)文件
替换原有文件

apply plugin: 'com.android.application'

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 
    defaultConfig { 
        applicationId "com.google.sample.helloandroidjni" 
        minSdkVersion 22 
        targetSdkVersion 23 
        versionCode 1 
        versionName "1.0" 
    } 
    buildTypes { 
        release { 
            minifyEnabled false 
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
        }
    }
}

apply plugin: 'com.android.model.application'
    model { 
        android { 
            compileSdkVersion 23 
            buildToolsVersion "23.0.3" 
            defaultConfig { 
                applicationId "com.google.sample.helloandroidjni"
                minSdkVersion.apiLevel 22 
                targetSdkVersion.apiLevel 23 
                versionCode 1 versionName "1.0" 
            } 
            buildTypes { 
                release { 
                    minifyEnabled false 
                    proguardFiles.add(file('proguard-android.txt')) 
                } 
            } 
        }
     }

这里需要注意 apply plugin发生了变化 android节点外加了model节点,其中的内容也发生了变化,model仅在android节点外,不要将dependencies节点加入其中
4.这里依旧执行Sync Project>Make Project>Run,没有报错就一切顺利

4 添加JNI代码

1.配置NDK 路径,上面依旧提到了如何下载,下载好之后将在sdk/ndk-bundle目录下

Android Studio利用Gradle配置NDK环境-'Hello-JNI'_第4张图片

2.打开 build.gradle (Module:xxx)文件,在 buildTypes节点下添加如下代码

buildTypes {
...
}
ndk {
    moduleName "hello-android-jni"
}

3.在MainActivity中添加如下代码

static { 
    System.loadLibrary("hello-android-jni"); 
} 
public native String getMsgFromJni();

4.执行Sync Project>Make Project,会在MainActivity看到getMsgFromJni方法报错,如下图点击提示创建方法即可

Android Studio利用Gradle配置NDK环境-'Hello-JNI'_第5张图片

5.点击创建方法后,将看到如下方法,修改 returnValue为任意字符即可 如 "Hello JNI"

#include 

JNIEXPORT jstring JNICALL
Java_com_google_sample_helloandroidjni_MainActivity_getMsgFromJni(JNIEnv *env, jobject instance) { 
    // TODO 
    return (*env)->NewStringUTF(env, returnValue);
}

6.在MainActivity中调用我们的native方法运行项目即可,如下

((TextView) findViewById(R.id.your_text_view)).setText(getMsgFromJni());

可以看到屏幕显示了"Hello JNI"

5 JNI代码调试

1.首先需要进行一些配置,点击


选择 Edit Config

Android Studio利用Gradle配置NDK环境-'Hello-JNI'_第6张图片

选择 Debugger> Debug type改为 Native

2.之后就像java代码中一样 在.c文件中点击左边栏打断点运行即可

到此为止就完成了一个简单的JNI调用的例子

你可能感兴趣的:(Android Studio利用Gradle配置NDK环境-'Hello-JNI')