第一步.安装ndk,配置环境变量

pico .bash_profile 注意要在根目录下
图片描述

图片描述

export PATH=/Users/humax/Development/Homebrew/bin:$PATH:$M2_HOME/bin:/Users/humax/Development/Homebrew/opt/android-ndk
export ANDROID_NDK=/Users/humax/Development/Homebrew/opt/android-ndk
export ANDROID_NDK

保存退出:
control+x
Y
回车

输入ndk-build,验证配置是否成功
图片描述

出现上面的结果,表示配置成功,ndk-build要配合Application.mk,Android.mk使用

第二步.编写HelloNDK项目

1.创建HelloNDK项目,gradle配置NDK

图片描述

ndk {
  abiFilters 'armeabi-v7a'
}

2.编写Java类

图片描述

3.编写对应C文件,并生成.so文件

1)Android Studio -> Build -> Make Project,生成class文件

图片描述
图片描述

2)利用javah 生成.h文件,注意javah 包名.类名

图片描述
图片描述

3)创建JNI Folder,把.h文件粘贴到里面

图片描述
图片描述

4)创建编写.cpp文件

图片描述

env -> NewStringUTF是JNI提供的功能接口

5)编写Application.mk,Android.mk,ndk-build生成so文件

图片描述
图片描述
注意:
Android.mk中

LOCAL_MODULE := hellondk
LOCAL_SRC_FILES := liufeismart_com_hellondk_JNIUtil.cpp

Application.mk中

APP_ABI := armeabi-v7a

注意,在调用idk-build之前,把jni目录移动
图片描述
在jni目录下,执行ndk-build

图片描述
图片描述

6)System.loadLibrary添加so库

图片描述
图片描述

注意:在gradle中添加

android {

sourceSets {
    main.jniLibs.srcDirs = ['libs']
}

否则,

Process: liufeismart.com.hellondk, PID: 18436
                                                                          java.lang.UnsatisfiedLinkError: Couldn't load hellondk from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/liufeismart.com.hellondk-2.apk"],nativeLibraryDirectories=[/data/app-lib/liufeismart.com.hellondk-2, /vendor/lib, /system/lib]]]: findLibrary returned null
                                                                              at java.lang.Runtime.loadLibrary(Runtime.java:358)
                                                                             at java.lang.System.loadLibrary(System.java:526)
                                                                             

7)运行项目

Demo地址:链接: https://pan.baidu.com/s/1nuLkrQp 密码: hig7


刘菲
11 声望0 粉丝

Android工程师