用Android Studio进行NDK开发(简化流程)

开发环境
Android Studio 1.3 RC3
android-ndk-r10e

转载请注明出处 : https://blog.csdn.net/hpu_zyh/article/details/48184581
博客主页 | 简书 | 知乎 | 微博 | github

###1. 准备NDK环境
我这里下载的是android-ndk-r10e
进入Android studio 的 Project Structure->SDK location -> Android NDK location, 设置android-ndk-r10e的路径, 配置好即可进行开发了(就是这么简单)
这里写图片描述

###2. NDK开发

####创建工程,配置NDK
在Android studio中创建一个新的Android项目, 修改项目下的build.gradle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
apply plugin: 'com.android.application'

android {
compileSdkVersion 22
buildToolsVersion "23.0.0 rc2"

defaultConfig {
applicationId "hanks.com.hkjni"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"

ndk{
moduleName "hkjni" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
}

编写 MainActivity
这里写图片描述

src\main目录下创建 jni目录
创建需要调用的 c语言文件

1
2
3
4
5
6
7
#include "jni.h"

JNIEXPORT jstring JNICALL Java_hanks_com_hkjni_MainActivity_getHello (JNIEnv * env , jobject obj){
char * str = "from hkcode";
return (*env)->NewStringUTF(env,str);
//如果不知道这个方法名怎么写可以通过 javah 生成
}

这里写图片描述

这里写图片描述

下面就可以直接运行了!!!(感觉比以前轻松好多啊)

如果不知道这个方法名怎么写可以通过 javah命令 生成,然后复制即可, 知道命名规则的话直接编写 .c 文件也可以
这里写图片描述

这里写图片描述


以前用Eclipse还有编辑 Android.mk文件,现在Android studio 自动生成了

这里写图片描述