Android NDK の 使い方
「Android NDK」の 使い方をまとめました。
1. Android NDK
「Android NDK」は、ネイティブ コードのアプリの一部に C や C++ などの言語を使用できるようにツールセットです。
2. NDKとCMAKEのインストール
(1) Androidプロジェクトの作成。
(2) 「Android Studio」のメニュー「Tools → SDK Manager」を選択し、「SDK Tools」タブを選択し、「NDK」と「CMAKE」をインストール。
3. C++コードの作成
(1) app/src/main/cppフォルダ (ない時は作成) に、「native-lib.cpp」を追加。
・native-lib.cpp
#include <jni.h>
#include <string>
extern "C" JNIEXPORT jstring JNICALL
Java_net_npaka_helloworld_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
JNIでネイティブメソッドを宣言する際には、以下のフォーマットに従います。
(2) appフォルダに、「CMakeLists.txt」を追加。
・CMakeLists.txt
cmake_minimum_required(VERSION 3.4.1)
add_library(native-lib SHARED src/main/cpp/native-lib.cpp)
find_library(log-lib log)
target_link_libraries(native-lib ${log-lib})
(3) 「app/build.gradle」に以下の設定を追加。
android {
:
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
4. Kotlinコードの編集
(1) 「MainActivity.kt」の編集。
・MainActivity.kt
package net.npaka.helloworld
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
// メインアクティビティ
class MainActivity : ComponentActivity() {
// ネイティブライブラリのロード
companion object {
init {
System.loadLibrary("native-lib")
}
}
// ネイティブメソッドの宣言
private external fun stringFromJNI(): String
// 初期化
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Text(stringFromJNI())
}
}
}
5. 実行
(1) コードを実行。
C++から返された文字列が表示されていることを確認します。
この記事が気に入ったらサポートをしてみませんか?