これまでAndroidのネイティブコードをC言語で扱った。しかしC言語だとクラスは使えないし、メモリ確保も面倒なのでこれからはC++を利用する。まずソースコードの拡張子をcppに変更する。

#include <string.h> #include <jni.h> #include <android/log.h> class CTest113 { public: CTest113() { __android_log_write(ANDROID_LOG_DEBUG,"Test113","CTest113::CTest113()"); } ~CTest113() { __android_log_write(ANDROID_LOG_DEBUG,"Test113","CTest113::~CTest113()"); } void TestFunc() { __android_log_write(ANDROID_LOG_DEBUG,"Test113","CTest113::TestFunc()"); } }; extern "C" jstring Java_com_Test113_Test113Act_stringFromJNI(JNIEnv* env,jobject thiz) { CTest113* pcTest; pcTest = new CTest113; pcTest->TestFunc(); delete pcTest; return env->NewStringUTF("Test113text"); // return (*env)->NewStringUTF(env, "Test113text"); }

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := Test113jni LOCAL_SRC_FILES := Test113jni.cpp LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY)