这篇文章上次修改于 1776 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

Android JNI编程

Android Studio基本配置

image-20200220025216873.png

配置ndk-build环境变量

~/AndroidStudioProjects/NDKDemo code ~/.zshrc
# NDK配置
export NDK_HOME=/Users/m1k3/Library/Android/sdk/ndk-bundle
export PATH=$PATH:$NDK_HOME/

image-20200220025347159.png

生成.h头文件(有时候这一步非必要操作)

新建Hello.java文件

生成.h头文件,执行如下命令

~/AndroidStudioProjects/HelloJni/app/src/main/java/com/example/hellojni javac Hello.java 
~/AndroidStudioProjects/HelloJni/app/src/main/java/com/example/hellojni cd ../../../                             
~/AndroidStudioProjects/HelloJni/app/src/main/java javah -jni com.example.hellojni.Hello  

项目目录结构

image-20200220025544916.png

新建jni目录将生成的头文件复制到jni目录下。

image-20200220001757057.png

image-20200220001826868.png

定义.c/.cpp文件

iShot2020-03-1014.23.05.jpg

在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库

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

image-20200220030224181.png

在Activity中引入:

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

使用SO库中的方法

String hi = Hello.hi();
Toast.makeText(getApplicationContext(), hi, Toast.LENGTH_SHORT).show();

Android Studio中NDK的简单开发到此结束。

参考:https://www.cnblogs.com/milovetingting/archive/2019/09/05/11468273.html