Browse Source

Added AndroidHelper class+JNI to hold Android specific initialization and stuff. Set HOME env var for pEpEngine to behave

JNI-44
Edouard Tisserant 10 years ago
parent
commit
88fb7a60cb
  1. 2
      android/build.gradle
  2. 10
      android/jni/Android.mk
  3. 20
      android/jni/org_pEp_jniadapter_AndroidHelper.cc
  4. 21
      android/jni/org_pEp_jniadapter_AndroidHelper.h
  5. 17
      android/src/org/pEp/jniadapter/AndroidHelper.java

2
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 = []

10
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)

20
android/jni/org_pEp_jniadapter_AndroidHelper.cc

@ -0,0 +1,20 @@
#include "org_pEp_jniadapter_AndroidHelper.h"
#include <stdlib.h>
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"

21
android/jni/org_pEp_jniadapter_AndroidHelper.h

@ -0,0 +1,21 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* 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

17
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);
}
}
Loading…
Cancel
Save