NDK

Cute_Code 公眾號:IT寶盒發表於2020-09-24

一、概念
1.1 ndk(原生開發套件)是一套工具,能夠讓開發者在Android應用中使用c和c++程式碼。

1.2 使用場景。
★進一步提升裝置效能,以降低延遲,或執行計算密集型應用,如遊戲或物理模擬
★重複使用自己過其他開發者的c和c++庫

二、編譯方式
2.1 ndkbuild ,as2.2之後,預設Cmake為編譯構建工具。ndkbuild,需要的配置檔案:android.mk, application.mk ,這種編譯方式較為傳統,必須遵守Java-包名-類名-方法名(JniEnv *env, jobect jobj,引數……)

在gradle中配置:

externalNativeBuild {
    ndkBuild {
        path "src/main/jni/Android.mk"
    }
}

此外,還可以android->defaultConfig 中配置載入動態庫的平臺

ndk{
    abiFilters "armeabi-v7a"……等
}

2.2 cmake, 這種方式也是as預設的構建編譯方式。相比於ndkbuild,可以不遵循複雜的命名方式,但需與Java類名保持一致。需要的配置檔案: CMakeLists.txt

在gradle中配置:

externalNativeBuild {
    cmake {
        path "CMakeLists.txt"
    }
}

配置載入動態庫的平臺:

externalNativeBuild {
    cmake {
        abiFilters "armeabi-v7a"
        cppFlags ""
    }
}

三、註冊方式

3.1 靜態註冊
原理: 根據函式名來建立 java 方法與 JNI 函式的一一對應關係

相關文章