欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

【Android】Android Studio NDK 开发

程序员文章站 2022-04-15 09:13:54
Android Studio NDK 开发 记录在Android Studio中NDK简单开发的步骤 用到的Android Studio版本为3.5。 配置NDK 下载NDK 一般在SDK下已经有自带的ndk文件夹,如sdk目录下的ndk bundle文件夹。 如果没有,可以在SDK Manager ......

android studio ndk 开发

记录在android studio中ndk简单开发的步骤

用到的android studio版本为3.5。

配置ndk

下载ndk

一般在sdk下已经有自带的ndk文件夹,如sdk目录下的ndk-bundle文件夹。

【Android】Android Studio NDK 开发

如果没有,可以在sdk manager中下载

【Android】Android Studio NDK 开发

下载lldb、ndk两项

下载完成后,可以在sdk目录下看到ndk的文件夹

【Android】Android Studio NDK 开发

配置环境变量

我的电脑-属性-高级系统设置-环境变量

新建一个android_ndk变量,配置上ndk文件夹的位置(在这个文件夹下可以看ndk-build.cmd等文件)

【Android】Android Studio NDK 开发

然后将这个变量加入到path变量中

【Android】Android Studio NDK 开发

生成so库

新建一个hello.java文件,里面增加一个本地方法

public static native string hi();

执行build-make project,在app\build\intermediates\javac\debug\classes目录下执行以下cmd命令生成头文件:

javah -jni com.wangyz.ndk.hello

在该目录下,可以看到生成的com_wangyz_ndk_hello.h文件。

在app/src/main/目录下新建jni目录,将生成的头文件复制到jni目录下。

在jni目录下新建com_wangyz_ndk_hello.c文件,编写c语言实现代码:

#include "com_wangyz_ndk_hello.h"

jniexport jstring jnicall java_com_wangyz_ndk_hello_hi
  (jnienv *env, jclass clazz){
  return (*env)->newstringutf(env,"hello");
  }

在jni目录下新建android.mk文件,内容如下:

local_path := $(call my-dir)
include $(clear_vars)

local_module := hello
local_src_files := com_wangyz_ndk_hello.c
include $(build_shared_library)

在jni目录下新建application.mk文件,内容如下:

app_abi := all

在该目录下执行cmd命令:

ndk-build

执行后生成所需的so文件。

引用so库

在app/src/main目录下新建目录jnilibs,将对应的so复制到该目录下:

【Android】Android Studio NDK 开发

在activity中引入:

static {
        system.loadlibrary("hello");
    }

使用so库中的方法

string hi = hello.hi();
toast.maketext(getapplicationcontext(), hi, toast.length_short).show();

android studio中ndk的简单开发到此结束。