ユーザ用ツール

サイト用ツール

サイドバー

About

Contents

Materials Link

その他

PR


wiki:android:tips:003

003 JNIを利用してC言語の関数を実装する

概要

Javaで作成された簡単な関数を、JNIを利用してC言語で実装してみます。

// 加算した値を返す。
protected int addValue(int value1, int value2)
{
	return value1 + value2;
}

これをC言語に置き換えてみます。

jniフォルダの作成

プロジェクトのディレクトリにjniフォルダを作成します。この中にソースコードとメイクファイルを配置していきます。

ソースコードの追加

#include <jni.h>
// 加算した値を返す。
jint Java_com_example_addapp_MainActivity_addValue( JNIEnv* env, jobject thiz, jint value1, jint value2 )
{
	return value1 + value2;
}

関数名が長くなっていますがこれは “Java_パッケージ名_クラス名_メソッド名” というメソッド名の規約があるためです。これを間違えていると実行時にエラーになります。

Android.mkファイルの追加

-Android用のmakefileを追加します
LOCAL_PATH := $(call my-dir)
#変数の初期化
include $(CLEAR_VARS)
#出力するモジュール名
LOCAL_MODULE	:= calcvalue
#モジュールを構成するC/C++のソースコード
LOCAL_SRC_FILES := calcvalue.c
#共有モジュールを出力
include $(BUILD_SHARED_LIBRARY)

呼び出し方

// ロードするモジュールを指定
static
{
	System.loadLibrary("calcvalue");
}
// 加算した値を返す。(nativeをつけることでJNI関数であることをを宣言する)
protected native int addValue(int value1, int value2);

これでネイティブコードでの実装に置き換えることが出来ます。

Permalink wiki/android/tips/003.txt · 最終更新: 2014/11/06 07:45 (外部編集)

oeffentlich