《Android---AndroidStudio項目添加NDK支持》---環境搭建過程並編寫測試程序

下載NDK開發工具

個人習慣開發工具單獨下載,並配置環境變量。因爲可能會有版本兼容等問題。如果你不想的話,可以直接在AndroidStudio中進行下載。
在這裏插入圖片描述
我的話只下載這兩個,偷懶的可以把NDK也勾選上。

LLDB:Low Level Debugger 調試工具
CMake:跨平臺的自動化構建系統

現在都不用Android.mk進行構建了。

NDK下載

  • 將下載好的ndk包進行解壓,放置到自己的存放目錄
  • 配置環境變量,並在AndroidStudio配置對應目錄
export NDK_HOME=/Users/{username}/xxx/xxx/android-ndk-r21
export PATH=${PATH}:${NDK_HOME}

使用以下命令使我們的配置生效

source ~/.bash_profile

ndk-build命令測試是否配置成功
在這裏插入圖片描述
AndroidStudio中配置NDK

在這裏插入圖片描述
並在根目錄下的gradle.properties中添加android.useDeprecatedNdk=true

創建JNI目錄,及so庫文件生成的目錄並在AndroidStudio中進行配置

android {
    defaultConfig {
        ...
        ndk{
        	// 模塊名稱,既生成的so的名稱
            moduleName = "fh"
            // 支持的cpu架構
            abiFilters("armeabi-v7a")
        }
    }

    signingConfigs {
		...
    }

    sourceSets {
        main {
        	// 源文件目錄
            jni.srcDirs = ['src/main/cpp']
            jniLibs.srcDirs = ['src/main/cpp/libs']
        }
    }

    externalNativeBuild {
        cmake {
        	// cmake配置文件位置
            path "CMakeLists.txt"
        }
    }

    buildTypes {
   		...
    }
}

創建對應的配置文件及源文件

在配置文件位置創建cmake配置文件CMakeLists.txt

# cmake最小支持版本
cmake_minimum_required(VERSION 3.4.1)

# 創建一個全局變量
file(GLOB source src/main/cpp/*.c src/main/cpp/*.cpp)
add_library(
        # 庫名稱
        fh

        # 庫類型 SHARED:動態庫,STATIC:靜態庫
        SHARED

        # 源文件
        ${source})

# 引入頭文件的目錄
include_directories(src/main/cpp/include/)

find_library(
        log-lib
        log)

# 鏈接 fh:目標庫 後面的是需要依賴的庫
target_link_libraries(
        fh
        ${log-lib})

在app/src/main/cpp下創建一個fh.cpp文件

#include <jni.h>
#include <stdio.h>
#include <android/log.h>

#define LOGI(...)  __android_log_print(ANDROID_LOG_INFO, "FH-LOG", __VA_ARGS__)

extern "C"
JNIEXPORT jstring JNICALL
Java_com_wxfjava_struggle_MainActivity_hello(JNIEnv *env, jobject thiz, jstring name) {

    char *cname = (char *) env->GetStringUTFChars(name, 0);
    char result[50];
    sprintf(result, "Hello %s,I am JNI.", cname);
    LOGI("獲得android參數:%s", cname);
    env->ReleaseStringUTFChars(name, cname);

    return env->NewStringUTF(result);
}

Java中的部分代碼

private TextView tvInfo;

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

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tvInfo = findViewById(R.id.tv_info);
    tvInfo.setText(hello("Android"));
}

native String hello(String name);

運行結果
在這裏插入圖片描述

CMake配置文件高亮插件
在這裏插入圖片描述

使用AndroidStudio創建NDK項目

這個就比較簡單了,直接往下拉找到如下圖,開始創建就好了。
老版貌似是勾選☑️Support C++
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章