Android Studio利用Gradle配置NDK-JNI开发环境

文章转载至:点击跳转原文

1 你需要做的

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

2 创建测试项目

  • 选择New Project然后一路Next之后Finish即可
  • 配置项目使用gradle wrapper,如下图选择Use Default Gradle wrapper (recommended)即可
    这里写图片描述

  • 下载NDK,如下图选择SDK Manager>SDK Tools>Android NDK(也可能叫NDK)这里写图片描述

  • 点击按钮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'
  • 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
  • 修改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节点加入其中
  • 这里依旧执行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调用的例子

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值