summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/java/android/app/NativeActivity.java6
-rw-r--r--core/java/android/content/res/AssetManager.java1
-rw-r--r--core/jni/android_app_NativeActivity.cpp12
3 files changed, 13 insertions, 6 deletions
diff --git a/core/java/android/app/NativeActivity.java b/core/java/android/app/NativeActivity.java
index ccc9ae3..3238b82 100644
--- a/core/java/android/app/NativeActivity.java
+++ b/core/java/android/app/NativeActivity.java
@@ -6,6 +6,7 @@ import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
+import android.content.res.AssetManager;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.Bundle;
@@ -52,7 +53,8 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2,
private boolean mDestroyed;
private native int loadNativeCode(String path, MessageQueue queue,
- String internalDataPath, String externalDataPath, int sdkVersion);
+ String internalDataPath, String externalDataPath, int sdkVersion,
+ AssetManager assetMgr);
private native void unloadNativeCode(int handle);
private native void onStartNative(int handle);
@@ -138,7 +140,7 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2,
mNativeHandle = loadNativeCode(path, Looper.myQueue(),
getFilesDir().toString(),
Environment.getExternalStorageAppFilesDirectory(ai.packageName).toString(),
- Build.VERSION.SDK_INT);
+ Build.VERSION.SDK_INT, getAssets());
if (mNativeHandle == 0) {
throw new IllegalArgumentException("Unable to load native library: " + path);
diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java
index 1070f08..73d9458 100644
--- a/core/java/android/content/res/AssetManager.java
+++ b/core/java/android/content/res/AssetManager.java
@@ -70,6 +70,7 @@ public final class AssetManager {
// For communication with native code.
private int mObject;
+ private int mNObject; // used by the NDK
private StringBlock mStringBlocks[] = null;
diff --git a/core/jni/android_app_NativeActivity.cpp b/core/jni/android_app_NativeActivity.cpp
index acbf854..0b2b507 100644
--- a/core/jni/android_app_NativeActivity.cpp
+++ b/core/jni/android_app_NativeActivity.cpp
@@ -24,6 +24,7 @@
#include <android_runtime/AndroidRuntime.h>
#include <android_runtime/android_view_Surface.h>
#include <android_runtime/android_app_NativeActivity.h>
+#include <android_runtime/android_util_AssetManager.h>
#include <surfaceflinger/Surface.h>
#include <ui/egl/android_natives.h>
#include <ui/InputTransport.h>
@@ -451,7 +452,8 @@ static bool mainWorkCallback(int fd, int events, void* data) {
static jint
loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jobject messageQueue,
- jstring internalDataDir, jstring externalDataDir, int sdkVersion)
+ jstring internalDataDir, jstring externalDataDir, int sdkVersion,
+ jobject jAssetMgr)
{
LOG_TRACE("loadNativeCode_native");
@@ -502,7 +504,7 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jobject messageQ
}
code->env = env;
code->clazz = env->NewGlobalRef(clazz);
-
+
const char* dirStr = env->GetStringUTFChars(internalDataDir, NULL);
code->internalDataPath = dirStr;
code->internalDataPath = code->internalDataPath.string();
@@ -512,9 +514,11 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jobject messageQ
code->externalDataPath = dirStr;
code->externalDataPath = code->externalDataPath.string();
env->ReleaseStringUTFChars(path, dirStr);
-
+
code->sdkVersion = sdkVersion;
+ code->assetManager = assetManagerForJavaObject(env, jAssetMgr);
+
code->createActivityFunc(code, NULL, 0);
}
@@ -770,7 +774,7 @@ dispatchKeyEvent_native(JNIEnv* env, jobject clazz, jint handle, jobject eventOb
}
static const JNINativeMethod g_methods[] = {
- { "loadNativeCode", "(Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;I)I",
+ { "loadNativeCode", "(Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;I;Landroid/content/res/AssetManager)I",
(void*)loadNativeCode_native },
{ "unloadNativeCode", "(I)V", (void*)unloadNativeCode_native },
{ "onStartNative", "(I)V", (void*)onStart_native },