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

下载NDK开发工具

个人习惯开发工具单独下载,并配置环境变量。因为可能会有版本兼容等问题。如果你不想的话,可以直接在AndroidStudio中进行下载。
在这里插入图片描述
我的话只下载这两个,偷懒的可以把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

在这里插入图片描述
并在根目录下的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 <jni.h>
#include <stdio.h>
#include <android/log.h>

#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);

运行结果
在这里插入图片描述

CMake配置文件高亮插件
在这里插入图片描述

使用AndroidStudio创建NDK项目

这个就比较简单了,直接往下拉找到如下图,开始创建就好了。
老版貌似是勾选☑️Support C++
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值