NDK基于CMake构建HelloWord

1.构建NDK开发环境

在Android Studio目录里面点击File-> Project Structure,选择SDK Location
vegetate

2.新建CPP源文件夹

将项目目录视图,切换到project视图,在main目录下,新建cpp目录
在这里插入图片描述

3.新建java调用类

package com.example.myapplication.Util;

public class HelloNDK {
    
    
    static {
    
    
        System.loadLibrary("HelloNDK");
    }
    //声明一个native方法
    public static  native String accessMethod();
}

4.新建c源程序文件

在这里插入图片描述

#include "jni.h"

JNIEXPORT jstring JNICALL Java_com_example_myapplication_Util_HelloNDK_accessMethod
        (JNIEnv *env, jobject obj, jint a, jint b) {
    
    
    return (*env)->NewStringUTF(env,"HelloWord");
}

5. 创建CMakeLists.txt

在这里插入图片描述
代码如下:

# 指定 CMake 使用版本
cmake_minimum_required(VERSION 3.9)

add_library(HelloNDK SHARED src/main/cpp/HelloNDK.c)

6. 配置gradle

在app/build.gradle文件下增加gradle代码

android {
    
    
    ...
    defaultConfig {
    
    
        ...
        externalNativeBuild{
    
    
            cmake {
    
    
                // Passes optional arguments to CMake.
                arguments  "-DANDROID_TOOLCHAIN=clang"
                abiFilters   'x86_64', 'x86', 'armeabi-v7a', 'arm64-v8a'
            }
        }
    }
    ...
    externalNativeBuild {
    
    
        // Encapsulates your CMake build configurations.
        cmake {
    
    
            // Provides a relative path to your CMake build script.
            path "CMakeLists.txt"
        }
    }
}

7. 调用

在activity的oncreate中调用

# <font color=blue>6. 配置gradle</font>

可以看到日志打印

com.example.myapplication I/测试: HelloWord

8. 生成so库

在这里插入图片描述
首先进入目录夹
在这里插入图片描述
然后调用javah -jni com.example.myapplication.Util.HelloNDK

C:\Users\admin\Desktop\NDKLearn\app\src\main\java>javah -jni com.example.myapplication.Util.HelloNDK

生成以下文件
在这里插入图片描述
将.h文件复制到
在这里插入图片描述
然后在HelloNDK.c源文件里面 #include “com_example_myapplication_Util_HelloNDK.h”

#include "jni.h"
#include "com_example_myapplication_Util_HelloNDK.h"
JNIEXPORT jstring JNICALL Java_com_example_myapplication_Util_HelloNDK_accessMethod
        (JNIEnv *env, jclass jclass1) {
    
    
    return (*env)->NewStringUTF(env,"HelloWord");
}

在CMakeLists.txt里面修改如下

# 指定 CMake 使用版本
cmake_minimum_required(VERSION 3.10.2)

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${
    
    PROJECT_SOURCE_DIR}/../jniLibs/${
    
    ANDROID_ABI})

add_library(HelloNDK SHARED src/main/cpp/HelloNDK.c)

然后点击
在这里插入图片描述
生成文件夹目录如下
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xuefu_78/article/details/105705933