《Android---AndroidStudio项目添加NDK支持》---环境搭建过程并编写测试程序

下载NDK开发工具

个人习惯开发工具单独下载,并配置环境变量。因为可能会有版本兼容等问题。如果你不想的话,可以直接在AndroidStudio中进行下载。
《Android---AndroidStudio项目添加NDK支持》---环境搭建过程并编写测试程序_第1张图片
我的话只下载这两个,偷懒的可以把NDK也勾选上。

LLDB:Low Level Debugger 调试工具
CMake:跨平台的自动化构建系统

现在都不用Android.mk进行构建了。

NDK下载

  • 将下载好的ndk包进行解压,放置到自己的存放目录
  • 配置环境变量,并在AndroidStudio配置对应目录
export NDK_HOME=/Users/{username}/xxx/xxx/android-ndk-r21
export PATH=${PATH}:${NDK_HOME}

使用以下命令使我们的配置生效

source ~/.bash_profile

ndk-build命令测试是否配置成功
在这里插入图片描述
AndroidStudio中配置NDK

《Android---AndroidStudio项目添加NDK支持》---环境搭建过程并编写测试程序_第2张图片
并在根目录下的gradle.properties中添加android.useDeprecatedNdk=true

创建JNI目录,及so库文件生成的目录并在AndroidStudio中进行配置

android {
    defaultConfig {
        ...
        ndk{
        	// 模块名称,既生成的so的名称
            moduleName = "fh"
            // 支持的cpu架构
            abiFilters("armeabi-v7a")
        }
    }

    signingConfigs {
		...
    }

    sourceSets {
        main {
        	// 源文件目录
            jni.srcDirs = ['src/main/cpp']
            jniLibs.srcDirs = ['src/main/cpp/libs']
        }
    }

    externalNativeBuild {
        cmake {
        	// cmake配置文件位置
            path "CMakeLists.txt"
        }
    }

    buildTypes {
   		...
    }
}

创建对应的配置文件及源文件

在配置文件位置创建cmake配置文件CMakeLists.txt

# cmake最小支持版本
cmake_minimum_required(VERSION 3.4.1)

# 创建一个全局变量
file(GLOB source src/main/cpp/*.c src/main/cpp/*.cpp)
add_library(
        # 库名称
        fh

        # 库类型 SHARED:动态库,STATIC:静态库
        SHARED

        # 源文件
        ${source})

# 引入头文件的目录
include_directories(src/main/cpp/include/)

find_library(
        log-lib
        log)

# 链接 fh:目标库 后面的是需要依赖的库
target_link_libraries(
        fh
        ${log-lib})

在app/src/main/cpp下创建一个fh.cpp文件

#include 
#include 
#include 

#define LOGI(...)  __android_log_print(ANDROID_LOG_INFO, "FH-LOG", __VA_ARGS__)

extern "C"
JNIEXPORT jstring JNICALL
Java_com_wxfjava_struggle_MainActivity_hello(JNIEnv *env, jobject thiz, jstring name) {

    char *cname = (char *) env->GetStringUTFChars(name, 0);
    char result[50];
    sprintf(result, "Hello %s,I am JNI.", cname);
    LOGI("获得android参数:%s", cname);
    env->ReleaseStringUTFChars(name, cname);

    return env->NewStringUTF(result);
}

Java中的部分代码

private TextView tvInfo;

static {
    System.loadLibrary("fh");
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tvInfo = findViewById(R.id.tv_info);
    tvInfo.setText(hello("Android"));
}

native String hello(String name);

运行结果
《Android---AndroidStudio项目添加NDK支持》---环境搭建过程并编写测试程序_第3张图片

CMake配置文件高亮插件
《Android---AndroidStudio项目添加NDK支持》---环境搭建过程并编写测试程序_第4张图片

使用AndroidStudio创建NDK项目

这个就比较简单了,直接往下拉找到如下图,开始创建就好了。
老版貌似是勾选☑️Support C++
《Android---AndroidStudio项目添加NDK支持》---环境搭建过程并编写测试程序_第5张图片

你可能感兴趣的:(Android)