From 88fb7a60cba86d60c5396f9f584993a4d427c3eb Mon Sep 17 00:00:00 2001 From: Edouard Tisserant Date: Tue, 1 Sep 2015 18:57:09 +0200 Subject: [PATCH] Added AndroidHelper class+JNI to hold Android specific initialization and stuff. Set HOME env var for pEpEngine to behave --- android/build.gradle | 2 +- android/jni/Android.mk | 10 ++++----- .../jni/org_pEp_jniadapter_AndroidHelper.cc | 20 ++++++++++++++++++ .../jni/org_pEp_jniadapter_AndroidHelper.h | 21 +++++++++++++++++++ .../src/org/pEp/jniadapter/AndroidHelper.java | 17 +++++++++++++++ 5 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 android/jni/org_pEp_jniadapter_AndroidHelper.cc create mode 100644 android/jni/org_pEp_jniadapter_AndroidHelper.h create mode 100644 android/src/org/pEp/jniadapter/AndroidHelper.java diff --git a/android/build.gradle b/android/build.gradle index 4c0781c..0f9b527 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -30,7 +30,7 @@ android { manifest.srcFile 'AndroidManifest.xml' // where to find generated Java source - java.srcDirs = ['../src'] + java.srcDirs = ['../src', 'src'] // disable automatic ndk-build call, which ignore our Android.mk jni.srcDirs = [] diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 8fc2e99..46bcc3a 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -79,10 +79,10 @@ LOCAL_SRC_FILES := \ ../../src/org_pEp_jniadapter_Message.cc \ ../../src/throw_pEp_exception.cc \ ../../src/jniutils.cc - -LOCAL_C_INCLUDES := ../src - - +LOCAL_C_INCLUDES := ../../src include $(BUILD_SHARED_LIBRARY) - +include $(CLEAR_VARS) +LOCAL_MODULE := pEpJNIAndroidHelper +LOCAL_SRC_FILES := org_pEp_jniadapter_AndroidHelper.cc +include $(BUILD_SHARED_LIBRARY) diff --git a/android/jni/org_pEp_jniadapter_AndroidHelper.cc b/android/jni/org_pEp_jniadapter_AndroidHelper.cc new file mode 100644 index 0000000..351c341 --- /dev/null +++ b/android/jni/org_pEp_jniadapter_AndroidHelper.cc @@ -0,0 +1,20 @@ + +#include "org_pEp_jniadapter_AndroidHelper.h" + +#include + +extern "C" { + +JNIEXPORT jint JNICALL Java_org_pEp_jniadapter_AndroidHelper_setenv + (JNIEnv* env, jclass clazz, jstring key, jstring value, jboolean overwrite) +{ + char* k = (char *) env->GetStringUTFChars(key, NULL); + char* v = (char *) env->GetStringUTFChars(value, NULL); + int err = setenv(k, v, overwrite); + env->ReleaseStringUTFChars(key, k); + env->ReleaseStringUTFChars(value, v); + return err; +} + +} // extern "C" + diff --git a/android/jni/org_pEp_jniadapter_AndroidHelper.h b/android/jni/org_pEp_jniadapter_AndroidHelper.h new file mode 100644 index 0000000..96303d1 --- /dev/null +++ b/android/jni/org_pEp_jniadapter_AndroidHelper.h @@ -0,0 +1,21 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class org_pEp_jniadapter_AndroidHelper */ + +#ifndef _Included_org_pEp_jniadapter_AndroidHelper +#define _Included_org_pEp_jniadapter_AndroidHelper +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_pEp_jniadapter_AndroidHelper + * Method: setenv + * Signature: (Ljava/lang/String;Ljava/lang/String;Z)I + */ +JNIEXPORT jint JNICALL Java_org_pEp_jniadapter_AndroidHelper_setenv + (JNIEnv *, jclass, jstring, jstring, jboolean); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/android/src/org/pEp/jniadapter/AndroidHelper.java b/android/src/org/pEp/jniadapter/AndroidHelper.java new file mode 100644 index 0000000..106413c --- /dev/null +++ b/android/src/org/pEp/jniadapter/AndroidHelper.java @@ -0,0 +1,17 @@ +package org.pEp.jniadapter; + +import android.content.Context; + +public class AndroidHelper { + static { + System.loadLibrary("pEpJNIAndroidHelper"); + } + + private static native int setenv(String key, String value, boolean overwrite); + + public static void setup(Context c) { + setenv("HOME", + c.getDir("home", Context.MODE_PRIVATE).getAbsolutePath(), + true); + } +}