NDK入門

第一步.安裝ndk,配置環境變量

pico .bash_profile 注意要在根目錄下
圖片描述java

圖片描述

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_NDKandroid

保存退出:
control+x
Y
回車bash

輸入ndk-build,驗證配置是否成功
圖片描述app

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

第二步.編寫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提供的功能接口ui

5)編寫Application.mk,Android.mk,ndk-build生成so文件

圖片描述
圖片描述
注意:
Android.mk中spa

LOCAL_MODULE := hellondk
LOCAL_SRC_FILES := liufeismart_com_hellondk_JNIUtil.cpp

Application.mk中code

APP_ABI := armeabi-v7a

注意,在調用idk-build以前,把jni目錄移動
圖片描述
在jni目錄下,執行ndk-buildblog

圖片描述
圖片描述

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

相關文章
相關標籤/搜索