Merge "Split AndroidRuntime into AndroidRuntimeBase base-class and the rest."
diff --git a/cmds/app_process/Android.mk b/cmds/app_process/Android.mk
index b9afe40..4eef129 100644
--- a/cmds/app_process/Android.mk
+++ b/cmds/app_process/Android.mk
@@ -9,7 +9,7 @@
libutils \
liblog \
libbinder \
- libandroid_runtime
+ libandroid_runtime_derived
LOCAL_MODULE:= app_process
@@ -30,7 +30,7 @@
libutils \
liblog \
libbinder \
- libandroid_runtime
+ libandroid_runtime_derived
LOCAL_MODULE := app_process__asan
LOCAL_MODULE_TAGS := eng
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index d8041c5..8e3d3b8 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -1,6 +1,25 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
+LOCAL_SRC_FILES:= \
+ AndroidRuntimeBase.cpp \
+ android_os_Parcel.cpp \
+ android_util_Binder.cpp
+
+LOCAL_SHARED_LIBRARIES:= \
+ libbinder \
+ libcutils \
+ libnativehelper \
+ libutils \
+
+LOCAL_MODULE := libandroid_runtime
+
+include $(BUILD_SHARED_LIBRARY)
+
+################################################################################
+
+include $(CLEAR_VARS)
+
LOCAL_CFLAGS += -DHAVE_CONFIG_H -DKHTML_NO_EXCEPTIONS -DGKWQ_NO_JAVA
LOCAL_CFLAGS += -DNO_SUPPORT_JS_BINDING -DQT_NO_WHEELEVENT -DKHTML_NO_XBL
LOCAL_CFLAGS += -U__APPLE__
@@ -67,7 +86,6 @@
android_os_Debug.cpp \
android_os_MemoryFile.cpp \
android_os_MessageQueue.cpp \
- android_os_Parcel.cpp \
android_os_SELinux.cpp \
android_os_SystemClock.cpp \
android_os_SystemProperties.cpp \
@@ -79,7 +97,6 @@
android_nio_utils.cpp \
android_text_format_Time.cpp \
android_util_AssetManager.cpp \
- android_util_Binder.cpp \
android_util_EventLog.cpp \
android_util_Log.cpp \
android_util_FloatMath.cpp \
@@ -183,6 +200,7 @@
LOCAL_SHARED_LIBRARIES := \
libmemtrack \
+ libandroid_runtime \
libandroidfw \
libexpat \
libnativehelper \
@@ -243,7 +261,7 @@
LOCAL_CFLAGS += -DMALLOC_LEAK_CHECK
endif
-LOCAL_MODULE:= libandroid_runtime
+LOCAL_MODULE:= libandroid_runtime_derived
include external/stlport/libstlport.mk
include $(BUILD_SHARED_LIBRARY)
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index 77c5c18..7dbdfc1 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -227,9 +227,6 @@
// ----------------------------------------------------------------------
-/*static*/ JavaVM* AndroidRuntime::mJavaVM = NULL;
-
-
AndroidRuntime::AndroidRuntime() :
mExitWithoutCleanup(false)
{
@@ -257,15 +254,6 @@
SkGraphics::Term();
}
-/*
- * Register native methods using JNI.
- */
-/*static*/ int AndroidRuntime::registerNativeMethods(JNIEnv* env,
- const char* className, const JNINativeMethod* gMethods, int numMethods)
-{
- return jniRegisterNativeMethods(env, className, gMethods, numMethods);
-}
-
status_t AndroidRuntime::callMain(const char* className,
jclass clazz, int argc, const char* const argv[])
{
@@ -928,22 +916,6 @@
}
/*
- * Get the JNIEnv pointer for this thread.
- *
- * Returns NULL if the slot wasn't allocated or populated.
- */
-/*static*/ JNIEnv* AndroidRuntime::getJNIEnv()
-{
- JNIEnv* env;
- JavaVM* vm = AndroidRuntime::getJavaVM();
- assert(vm != NULL);
-
- if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK)
- return NULL;
- return env;
-}
-
-/*
* Makes the current thread visible to the VM.
*
* The JNIEnv pointer returned is only valid for the current thread, and
diff --git a/core/jni/AndroidRuntimeBase.cpp b/core/jni/AndroidRuntimeBase.cpp
new file mode 100644
index 0000000..38afc49c
--- /dev/null
+++ b/core/jni/AndroidRuntimeBase.cpp
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "AndroidRuntimeBase"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#include <android_runtime/AndroidRuntime.h>
+
+#include "jni.h"
+#include "JNIHelp.h"
+
+namespace android {
+
+/*static*/ JavaVM* AndroidRuntimeBase::mJavaVM = NULL;
+
+/*
+ * Get the JNIEnv pointer for this thread.
+ *
+ * Returns NULL if the slot wasn't allocated or populated.
+ */
+/*static*/ JNIEnv* AndroidRuntimeBase::getJNIEnv()
+{
+ JNIEnv* env;
+ JavaVM* vm = AndroidRuntimeBase::getJavaVM();
+ assert(vm != NULL);
+
+ if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK)
+ return NULL;
+ return env;
+}
+
+/*
+ * Register native methods using JNI.
+ */
+/*static*/ int AndroidRuntimeBase::registerNativeMethods(JNIEnv* env,
+ const char* className, const JNINativeMethod* gMethods, int numMethods)
+{
+ return jniRegisterNativeMethods(env, className, gMethods, numMethods);
+}
+
+} // namespace android
+
diff --git a/include/android_runtime/AndroidRuntime.h b/include/android_runtime/AndroidRuntime.h
index 0b3ce9a..efd92bb 100644
--- a/include/android_runtime/AndroidRuntime.h
+++ b/include/android_runtime/AndroidRuntime.h
@@ -19,6 +19,8 @@
#ifndef _RUNTIME_ANDROID_RUNTIME_H
#define _RUNTIME_ANDROID_RUNTIME_H
+#include "AndroidRuntimeBase.h"
+
#include <utils/Errors.h>
#include <binder/IBinder.h>
#include <utils/String8.h>
@@ -31,7 +33,7 @@
namespace android {
-class AndroidRuntime
+class AndroidRuntime : public AndroidRuntimeBase
{
public:
AndroidRuntime();
@@ -45,12 +47,6 @@
};
/**
- * Register a set of methods in the specified class.
- */
- static int registerNativeMethods(JNIEnv* env,
- const char* className, const JNINativeMethod* gMethods, int numMethods);
-
- /**
* Call a class's static main method with the given arguments,
*/
status_t callMain(const char* className, jclass clazz, int argc,
@@ -104,12 +100,6 @@
static android_thread_id_t createJavaThread(const char* name, void (*start)(void *),
void* arg);
- /** return a pointer to the VM running in this process */
- static JavaVM* getJavaVM() { return mJavaVM; }
-
- /** return a pointer to the JNIEnv pointer for this thread */
- static JNIEnv* getJNIEnv();
-
/** return a new string corresponding to 'className' with all '.'s replaced by '/'s. */
static char* toSlashClassName(const char* className);
@@ -121,9 +111,6 @@
Vector<JavaVMOption> mOptions;
bool mExitWithoutCleanup;
- /* JNI JavaVM pointer */
- static JavaVM* mJavaVM;
-
/*
* Thread creation helpers.
*/
diff --git a/include/android_runtime/AndroidRuntimeBase.h b/include/android_runtime/AndroidRuntimeBase.h
new file mode 100644
index 0000000..2b14987
--- /dev/null
+++ b/include/android_runtime/AndroidRuntimeBase.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _RUNTIME_ANDROID_RUNTIME_BASE_H
+#define _RUNTIME_ANDROID_RUNTIME_BASE_H
+
+#include <nativehelper/jni.h>
+
+namespace android {
+
+struct AndroidRuntimeBase {
+ /** return a pointer to the VM running in this process */
+ static JavaVM* getJavaVM() { return mJavaVM; }
+
+ /** return a pointer to the JNIEnv pointer for this thread */
+ static JNIEnv* getJNIEnv();
+
+ /**
+ * Register a set of methods in the specified class.
+ */
+ static int registerNativeMethods(JNIEnv* env,
+ const char* className, const JNINativeMethod* gMethods, int numMethods);
+
+protected:
+ /* JNI JavaVM pointer */
+ static JavaVM* mJavaVM;
+
+ AndroidRuntimeBase() {}
+ virtual ~AndroidRuntimeBase() {}
+
+ AndroidRuntimeBase(const AndroidRuntimeBase &);
+ AndroidRuntimeBase &operator=(const AndroidRuntimeBase &);
+};
+
+} // namespace android
+
+#endif // _RUNTIME_ANDROID_RUNTIME_BASE_H
diff --git a/media/jni/Android.mk b/media/jni/Android.mk
index 51fccd4..8323ae3 100644
--- a/media/jni/Android.mk
+++ b/media/jni/Android.mk
@@ -24,6 +24,7 @@
LOCAL_SHARED_LIBRARIES := \
libandroid_runtime \
+ libandroid_runtime_derived \
libnativehelper \
libutils \
libbinder \
diff --git a/media/jni/mediaeditor/Android.mk b/media/jni/mediaeditor/Android.mk
index 6be7fdd..b9c70f8 100644
--- a/media/jni/mediaeditor/Android.mk
+++ b/media/jni/mediaeditor/Android.mk
@@ -48,6 +48,7 @@
LOCAL_SHARED_LIBRARIES := \
libandroid_runtime \
+ libandroid_runtime_derived \
libaudioflinger \
libaudioutils \
libbinder \
diff --git a/native/android/Android.mk b/native/android/Android.mk
index cda38e0..f55f94a 100644
--- a/native/android/Android.mk
+++ b/native/android/Android.mk
@@ -25,7 +25,8 @@
libbinder \
libui \
libgui \
- libandroid_runtime
+ libandroid_runtime \
+ libandroid_runtime_derived
LOCAL_STATIC_LIBRARIES := \
libstorage
diff --git a/native/graphics/jni/Android.mk b/native/graphics/jni/Android.mk
index 8b333e7..02fa1b9 100644
--- a/native/graphics/jni/Android.mk
+++ b/native/graphics/jni/Android.mk
@@ -20,6 +20,7 @@
LOCAL_SHARED_LIBRARIES := \
libandroid_runtime \
+ libandroid_runtime_derived \
libskia
LOCAL_C_INCLUDES += \
diff --git a/rs/jni/Android.mk b/rs/jni/Android.mk
index cbb5b3b..4814a6e 100644
--- a/rs/jni/Android.mk
+++ b/rs/jni/Android.mk
@@ -6,6 +6,7 @@
LOCAL_SHARED_LIBRARIES := \
libandroid_runtime \
+ libandroid_runtime_derived \
libandroidfw \
libnativehelper \
libRS \
diff --git a/services/core/jni/Android.mk b/services/core/jni/Android.mk
index 85f69a4..98d7e38 100644
--- a/services/core/jni/Android.mk
+++ b/services/core/jni/Android.mk
@@ -37,6 +37,7 @@
LOCAL_SHARED_LIBRARIES += \
libandroid_runtime \
+ libandroid_runtime_derived \
libandroidfw \
libbinder \
libcutils \