Android NDK入門 —— 第一個NDK程序

前言

我會在小專欄簡書一起分享。
最近在搞NDK開發,于是想著申請專欄跟大家一起分享我的學習過程,剛申請完沒想到就有人關注了,讓我更有了干勁。如今大部分Android開發應該是了Android Studio(AS),所以接下來基本圍繞AS來開發。如果有需要Eclipse入門的可以留言給我。

正題

使用AS開發現在有兩種方式,分別ndk-build和CMake。不管哪種方式都需要安裝Android NDK工具,需要調試需要LLDB工具,使用CMake編譯就需要CMake工具,如圖,

首頁講講使用ndk-build編譯,先使用Android Studio新建一個基礎項目,在任意類中新建native方法進行一次編譯。接著打開Terminal工具,通過命令行“cd app/src/main/java”進去到工程目錄,然后使用命令“javah -jni <包名>.<類名>”,噌。蹦出一個錯誤找不到xxx類,進過一翻搜索后發現原來現在是要這樣“javah -classpath . -jni <包名>.<類名>”,注意在-classpath后面是有一個空格和一個點,敲完回車.h文件就生成了。把得到的.h文件拉到我們的jni文件夾中,在新建一個.c文件進行編碼。接下來就是要生成.so文件,根據一位大神的方案配置了External Tools。
1.javah命令生成.h文件



2.ndk-build命令生成.so文件

除了以上設置以外,還有必須配置在build.gradle ->defaultConfig

ndk{
   moduleName "HelloJniLibName"         //生成的so名字
}

根據存放的so文件配置

sourceSets.main {
    jni.srcDirs = ['src/main/jni']
    jniLibs.srcDir 'src/main/jniLibs'
}

在gradle.properties中需要加入

android.useDeprecatedNdk=true

最后別忘了Android.mk文件和Application.mk文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := HelloJniLibName
LOCAL_SRC_FILES := ndktest-jni.c
include $(BUILD_SHARED_LIBRARY)

以上都搞定后,你可以在你的jni目錄右鍵使用NDK->ndk-build操作就會在響應目錄生成.so文件了。

結尾

第一次寫望大家見諒,可留言指點,今天就先到這了明天繼續CMake方式生成so文件。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容