NDK快速集成秘籍(Android Studio)

版权声明:本文为博主原创文章,转载请声明。 https://blog.csdn.net/qq_32175491/article/details/78984376
  1. 下载NDK:这里我才用的是第一种方法:
    第一种方案:NDK官方下载链接(需要翻墙,如果没有翻墙软件的朋友可以试试XX-net,好用的话支持下点下赞)
    第二种:国内NDK下载链接,搜索ndk
    第三种:Android Studio本地下载:
    这里写图片描述

  2. 第二步:如果你是采用上面第三种方法,会在sdk目录下生成一个ndk-bundle的文件夹。如果是第一二种方法下载,解压之后可以在sdk下新建一个ndk-bundle的文件夹,把解压文件拷贝进来。如图:
    这里写图片描述

  3. 配置ndk的环境:找到ndk中的ndk_build.cmd文件所在目录,拷贝其路径:我这里是:D:\Android\android-sdk-windows\android-sdk-windows\ndk-bundle:如图:
    这里写图片描述

  4. 设置配置环境:打开环境配置(window下快捷键win+pause|break):新建一个变量NDK_BOOT(名字可以随便取);值为上面的ndk_build.cmd文件路径名。再在PATH或者系统变量的path中设置%NDK_ROOT%;
    当然最简单粗暴的方法直接是将ndk_build.cmd的路径设置到系统变量path里面就可以了。

这里写图片描述

  1. 检测是否可用:打开控制台输入:ndk-build,显示如下文字即表示配置成功。

这里写图片描述

可能大家早就发现了,环境配置的主要目的就是能在用户所在目录随时访问这个文件。就是如果你不配置环境变量的话,你只能在控制台cd到文件所在位置才能访问到这个文件。如图:

这里写图片描述

  1. NDK环境配置成功,如何集成到Android Studio上?也很简单:打开项目ndk路径配置界面(快捷键ctrl+shift+alt+s),填写你的ndk的安装路径即可。

这里写图片描述

  1. 在gradle.properties文件中添加对旧版本的ndk的支持的配置,不然项目无法编译通过:android.useDeprecatedNdk=true

这里写图片描述

  1. 编写调用C的代码,创建一个实体类:

这里写图片描述

  1. 生成调用本地方法的.h头文件。这里使用terminal即可生成
    这里写图片描述

  2. 生成之后打开项目java文件
    这里写图片描述

  3. 创建jni文件夹,并将上一步生成的.h文件剪贴到当前jni目录下:

这里写图片描述

  1. 在当前jni文件夹下创建一个编写.c文件,将c语音代码写入:
    这里写图片描述
    这里写图片描述

  2. 修改当前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");
}
  1. 在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/']}}
}

这里写图片描述

  1. 配置完成,Rebuild Project,完成安装调用即可:
    这里写图片描述
    运行代码:
    这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_32175491/article/details/78984376
今日推荐