下载NDK:这里我才用的是第一种方法:
第一种方案:NDK官方下载链接(需要翻墙,如果没有翻墙软件的朋友可以试试XX-net,好用的话支持下点下赞)
第二种:国内NDK下载链接,搜索ndk
第三种:Android Studio本地下载:
第二步:如果你是采用上面第三种方法,会在sdk目录下生成一个ndk-bundle的文件夹。如果是第一二种方法下载,解压之后可以在sdk下新建一个ndk-bundle的文件夹,把解压文件拷贝进来。如图:
配置ndk的环境:找到ndk中的ndk_build.cmd文件所在目录,拷贝其路径:我这里是:D:\Android\android-sdk-windows\android-sdk-windows\ndk-bundle:如图:
设置配置环境:打开环境配置(window下快捷键win+pause|break):新建一个变量NDK_BOOT(名字可以随便取);值为上面的ndk_build.cmd文件路径名。再在PATH或者系统变量的path中设置%NDK_ROOT%;
当然最简单粗暴的方法直接是将ndk_build.cmd的路径设置到系统变量path里面就可以了。
- 检测是否可用:打开控制台输入:ndk-build,显示如下文字即表示配置成功。
可能大家早就发现了,环境配置的主要目的就是能在用户所在目录随时访问这个文件。就是如果你不配置环境变量的话,你只能在控制台cd到文件所在位置才能访问到这个文件。如图:
- NDK环境配置成功,如何集成到Android Studio上?也很简单:打开项目ndk路径配置界面(快捷键ctrl+shift+alt+s),填写你的ndk的安装路径即可。
- 在gradle.properties文件中添加对旧版本的ndk的支持的配置,不然项目无法编译通过:android.useDeprecatedNdk=true
- 编写调用C的代码,创建一个实体类:
生成调用本地方法的.h头文件。这里使用terminal即可生成
生成之后打开项目java文件
创建jni文件夹,并将上一步生成的.h文件剪贴到当前jni目录下:
在当前jni文件夹下创建一个编写.c文件,将c语音代码写入:
修改当前NdkjniT文件(我之前创建了一个NdkjniT文件),编写c代码:
#include <com_aserbao_aserbaosandroid_NdkjniT.h>
JNIEXPORT jstring JNICALL Java_com_aserbao_aserbaosandroid_NdkjniT_getString
(JNIEnv *env, jclass cls){
return (*env)->NewStringUTF(env,"This is a test for ndk");
}
- 在app.gradle中添加配置:
android {
compileSdkVersion 25
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.aserbao.aserbaosandroid"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk{
moduleName "NdkjniT" //so文件名
cFlags "-DANDROID_NDK -D_RELEASE"
ldLibs "m", "log", "jnigraphics"
abiFilters"armeabi","armeabi-v7a","arm64-v8a","mips","mips64","x86","x86_64"
stl "stlport_shared"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
splits {
abi {
enable true
reset()
include 'armeabi','armeabi-v7a', 'arm64-v8a', 'mips', 'mips64','x86', 'x86_64' //select ABIs to build APKs for
universalApk true //generate an additional APK that contains all the ABIs
}
}
sourceSets{main{ jni.srcDirs = ['src/main/jni','src/main/jni/']}}
}
- 配置完成,Rebuild Project,完成安装调用即可:
运行代码: