Android Studio利用Gradle配置NDK环境-
2016-06-14 本文已影响3474人
litao0621
1 你需要做的
- 更新你的Android studio到2.2或更高版本
- 下载Android NDK version 11r或更高
- 更新Android SDK Tools到最新版
2 创建测试项目
- 选择
New Project
然后一路Next
之后Finish
即可 - 配置项目使用
gradle wrapper
,如下图选择Use Default Gradle wrapper (recommended)
即可

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

4.点击按钮Sync Project
>Make Project
>Run
,现在还看不到什么效果
3 更新Gradle文件
- 打开
build.gradle(Project:XXX)
文件,应该是类似下图

我们需要替换
classpath 'com.android.tools.build:gradle:2.1.0'
为
classpath 'com.android.tools.build:gradle-experimental:0.7.2'
2.gradle-experimental
v0.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目录下

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
方法报错,如下图点击提示创建方法即可

5.点击创建方法后,将看到如下方法,修改
returnValue
为任意字符即可 如"Hello JNI"
#include <jni.h>
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

选择
Debugger
>Debug type
改为Native
2.之后就像java
代码中一样 在.c
文件中点击左边栏打断点运行即可
到此为止就完成了一个简单的JNI调用的例子