From 01a4ab77266016278b0c192574718b2e04406161 Mon Sep 17 00:00:00 2001 From: faketruth Date: Sun, 19 Aug 2012 16:43:47 +0000 Subject: Android: Moved Android stuff to the ~/trunk/Android/ folder! git-svn-id: http://mc-server.googlecode.com/svn/trunk@758 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- .classpath | 8 - .project | 33 --- .settings/org.eclipse.jdt.core.prefs | 4 - Android/.classpath | 8 + Android/.project | 33 +++ Android/.settings/org.eclipse.jdt.core.prefs | 4 + Android/AndroidManifest.xml | 27 +++ Android/jni/Android.mk | 44 ++++ Android/jni/Application.mk | 4 + Android/jni/ToJava.cpp | 3 + Android/jni/ToJava.h | 59 ++++++ Android/jni/app-android.cpp | 119 +++++++++++ Android/proguard-project.txt | 20 ++ Android/project.properties | 14 ++ Android/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes Android/res/drawable-ldpi/ic_launcher.png | Bin 0 -> 2729 bytes Android/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes Android/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes Android/res/layout/main.xml | 46 +++++ Android/res/values/strings.xml | 12 ++ Android/src/com/mcserver/MCServerActivity.java | 265 ++++++++++++++++++++++++ AndroidManifest.xml | 27 --- jni/Android.mk | 44 ---- jni/Application.mk | 4 - jni/ToJava.cpp | 3 - jni/ToJava.h | 59 ------ jni/app-android.cpp | 119 ----------- proguard-project.txt | 20 -- project.properties | 14 -- res/drawable-hdpi/ic_launcher.png | Bin 9397 -> 0 bytes res/drawable-ldpi/ic_launcher.png | Bin 2729 -> 0 bytes res/drawable-mdpi/ic_launcher.png | Bin 5237 -> 0 bytes res/drawable-xhdpi/ic_launcher.png | Bin 14383 -> 0 bytes res/layout/main.xml | 46 ----- res/values/strings.xml | 12 -- src/com/mcserver/MCServerActivity.java | 267 ------------------------- 36 files changed, 658 insertions(+), 660 deletions(-) delete mode 100644 .classpath delete mode 100644 .project delete mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 Android/.classpath create mode 100644 Android/.project create mode 100644 Android/.settings/org.eclipse.jdt.core.prefs create mode 100644 Android/AndroidManifest.xml create mode 100644 Android/jni/Android.mk create mode 100644 Android/jni/Application.mk create mode 100644 Android/jni/ToJava.cpp create mode 100644 Android/jni/ToJava.h create mode 100644 Android/jni/app-android.cpp create mode 100644 Android/proguard-project.txt create mode 100644 Android/project.properties create mode 100644 Android/res/drawable-hdpi/ic_launcher.png create mode 100644 Android/res/drawable-ldpi/ic_launcher.png create mode 100644 Android/res/drawable-mdpi/ic_launcher.png create mode 100644 Android/res/drawable-xhdpi/ic_launcher.png create mode 100644 Android/res/layout/main.xml create mode 100644 Android/res/values/strings.xml create mode 100644 Android/src/com/mcserver/MCServerActivity.java delete mode 100644 AndroidManifest.xml delete mode 100644 jni/Android.mk delete mode 100644 jni/Application.mk delete mode 100644 jni/ToJava.cpp delete mode 100644 jni/ToJava.h delete mode 100644 jni/app-android.cpp delete mode 100644 proguard-project.txt delete mode 100644 project.properties delete mode 100644 res/drawable-hdpi/ic_launcher.png delete mode 100644 res/drawable-ldpi/ic_launcher.png delete mode 100644 res/drawable-mdpi/ic_launcher.png delete mode 100644 res/drawable-xhdpi/ic_launcher.png delete mode 100644 res/layout/main.xml delete mode 100644 res/values/strings.xml delete mode 100644 src/com/mcserver/MCServerActivity.java diff --git a/.classpath b/.classpath deleted file mode 100644 index a4f1e4054..000000000 --- a/.classpath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/.project b/.project deleted file mode 100644 index 34dd17184..000000000 --- a/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - MCServer - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index da5d06089..000000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 -org.eclipse.jdt.core.compiler.compliance=1.5 -org.eclipse.jdt.core.compiler.source=1.5 diff --git a/Android/.classpath b/Android/.classpath new file mode 100644 index 000000000..a4f1e4054 --- /dev/null +++ b/Android/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Android/.project b/Android/.project new file mode 100644 index 000000000..34dd17184 --- /dev/null +++ b/Android/.project @@ -0,0 +1,33 @@ + + + MCServer + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + diff --git a/Android/.settings/org.eclipse.jdt.core.prefs b/Android/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..da5d06089 --- /dev/null +++ b/Android/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/Android/AndroidManifest.xml b/Android/AndroidManifest.xml new file mode 100644 index 000000000..d59d6e054 --- /dev/null +++ b/Android/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android/jni/Android.mk b/Android/jni/Android.mk new file mode 100644 index 000000000..6fd8d3a14 --- /dev/null +++ b/Android/jni/Android.mk @@ -0,0 +1,44 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) +LOCAL_MODULE := mcserver + + + +LOCAL_SRC_FILES := $(shell find ../lua-5.1.4 ../jsoncpp-src-0.5.0 ../zlib-1.2.7 ../source ../squirrel_3_0_1_stable ../tolua++-1.0.93 ../iniFile ../WebServer '(' -name '*.cpp' -o -name '*.c' ')') +LOCAL_SRC_FILES := $(filter-out %SquirrelFunctions.cpp %SquirrelBindings.cpp %cPlugin_Squirrel.cpp %cSquirrelCommandBinder.cpp %minigzip.c %lua.c %tolua.c %toluabind.c %LeakFinder.cpp %StackWalker.cpp %example.c,$(LOCAL_SRC_FILES)) +LOCAL_SRC_FILES := $(patsubst %.cpp,../%.cpp,$(LOCAL_SRC_FILES)) +LOCAL_SRC_FILES := $(patsubst %.c,../%.c,$(LOCAL_SRC_FILES)) +LOCAL_SRC_FILES += app-android.cpp ToJava.cpp + +LOCAL_CFLAGS := -DANDROID_NDK \ + -ffast-math \ + -O3 \ + -funroll-loops \ + -mfloat-abi=softfp -mfpu=neon \ + + +LOCAL_STATIC_LIBRARIES := cpufeatures + +LOCAL_C_INCLUDES := ../source \ + ../source/md5 \ + ../WebServer \ + ../source/packets \ + ../source/items \ + ../source/blocks \ + ../tolua++-1.0.93/src/lib \ + ../lua-5.1.4/src \ + ../zlib-1.2.7 \ + ../iniFile \ + ../tolua++-1.0.93/include \ + ../jsoncpp-src-0.5.0/include \ + ../jsoncpp-src-0.5.0/src/lib_json \ + ../squirrel_3_0_1_stable/include \ + ../squirrel_3_0_1_stable \ + ../squirrel_3_0_1_stable/sqrat \ + + +LOCAL_LDLIBS := -ldl -llog + +include $(BUILD_SHARED_LIBRARY) +$(call import-module,cpufeatures) diff --git a/Android/jni/Application.mk b/Android/jni/Application.mk new file mode 100644 index 000000000..c68dfe204 --- /dev/null +++ b/Android/jni/Application.mk @@ -0,0 +1,4 @@ +# Build both ARMv5TE and ARMv7-A machine code. +APP_MODULES := mcserver +# APP_ABI := armeabi armeabi-v7a +APP_STL := stlport_static \ No newline at end of file diff --git a/Android/jni/ToJava.cpp b/Android/jni/ToJava.cpp new file mode 100644 index 000000000..10d4e84a0 --- /dev/null +++ b/Android/jni/ToJava.cpp @@ -0,0 +1,3 @@ +#include "Globals.h" + +#include "ToJava.h" \ No newline at end of file diff --git a/Android/jni/ToJava.h b/Android/jni/ToJava.h new file mode 100644 index 000000000..bc10f01e3 --- /dev/null +++ b/Android/jni/ToJava.h @@ -0,0 +1,59 @@ +#pragma once + +#include +#include +extern JNIEnv* g_CurrentJNIEnv; +extern JavaVM* g_JavaVM; +extern jobject g_JavaThread; +//extern jobject g_JavaActivity; + +//__android_log_vprint(ANDROID_LOG_ERROR,"MCServer", a_Format, argList); + +static void CallJavaFunction_Void_String( jobject a_Object, const std::string & a_FunctionName, const std::string & a_StringParam ) +{ + JNIEnv * oldEnv = g_CurrentJNIEnv; + int status = g_JavaVM->AttachCurrentThread(&g_CurrentJNIEnv, NULL); + __android_log_print(ANDROID_LOG_ERROR,"MCServer", "STATUS: %i old: %p new: %p", status, oldEnv, g_CurrentJNIEnv ); + jstring str = g_CurrentJNIEnv->NewStringUTF( a_StringParam.c_str() ); + + + //__android_log_print(ANDROID_LOG_ERROR,"MCServer", "JNIEnv: %i Object: %i", g_CurrentJNIEnv, a_Object ); + jclass cls = g_CurrentJNIEnv->GetObjectClass( a_Object ); + //__android_log_print(ANDROID_LOG_ERROR,"MCServer", "jclass: %i", cls ); + jmethodID mid = g_CurrentJNIEnv->GetMethodID( cls, a_FunctionName.c_str(), "(Ljava/lang/String;)V"); // void a_FunctionName( String ) + //__android_log_print(ANDROID_LOG_ERROR,"MCServer", "jmethodID: %i", mid ); + if (mid != 0) + { + + __android_log_print(ANDROID_LOG_ERROR,"MCServer", "Going to call right NOW! %s", a_FunctionName.c_str() ); + g_CurrentJNIEnv->CallVoidMethod( a_Object, mid, str ); + } + else + { + __android_log_print(ANDROID_LOG_ERROR,"MCServer", "It was 0, derp" ); + } + + if( oldEnv != g_CurrentJNIEnv ) + { + g_JavaVM->DetachCurrentThread(); + } +} + + +static void CallJavaFunction_Void_Void( jobject a_Object, const std::string & a_FunctionName ) +{ + //__android_log_print(ANDROID_LOG_ERROR,"MCServer", "JNIEnv: %i Object: %i", g_CurrentJNIEnv, a_Object ); + jclass cls = g_CurrentJNIEnv->GetObjectClass( a_Object ); + //__android_log_print(ANDROID_LOG_ERROR,"MCServer", "jclass: %i", cls ); + jmethodID mid = g_CurrentJNIEnv->GetMethodID( cls, a_FunctionName.c_str(), "()V"); // void a_FunctionName( String ) + //__android_log_print(ANDROID_LOG_ERROR,"MCServer", "jmethodID: %i", mid ); + if (mid != 0) + { + //__android_log_print(ANDROID_LOG_ERROR,"MCServer", "Going to call right NOW! %s", a_FunctionName.c_str() ); + g_CurrentJNIEnv->CallVoidMethod( a_Object, mid ); + } + else + { + __android_log_print(ANDROID_LOG_ERROR,"MCServer", "It was 0, derp" ); + } +} \ No newline at end of file diff --git a/Android/jni/app-android.cpp b/Android/jni/app-android.cpp new file mode 100644 index 000000000..a6fb1baf2 --- /dev/null +++ b/Android/jni/app-android.cpp @@ -0,0 +1,119 @@ +#include "Globals.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "cCriticalSection.h" +#include "cRoot.h" +#include "cMakeDir.h" +#include "ToJava.h" + +#include + +cCriticalSection g_CriticalSection; + +JNIEnv* g_CurrentJNIEnv = 0; +jobject g_JavaThread = 0; +JavaVM* g_JavaVM = 0; +//jobject g_JavaActivity = 0; + +cRoot * pRoot = NULL; + + +class cMainThread : + public cIsThread +{ +public: + cMainThread() : + cIsThread("cMainThread") + { + //Start(); + __android_log_print(ANDROID_LOG_ERROR,"MCServer", "%s", "cMainThread"); + } + + void Stop(void) + { + m_ShouldTerminate = true; + Wait(); + } + +protected: + + virtual void Execute(void) override + { + __android_log_print(ANDROID_LOG_ERROR,"MCServer", "%s", "Execute"); + pRoot = new cRoot(); + pRoot->Start(); + delete pRoot; + } + +} ; + +cMainThread * pMainThread = NULL; + +jint JNI_OnLoad(JavaVM* vm, void* reserved) +{ + __android_log_print(ANDROID_LOG_ERROR,"MCServer", "%s", "JNI_OnLoad JNI_OnLoad JNI_OnLoad JNI_OnLoad"); + g_JavaVM = vm; + return JNI_VERSION_1_4; +} + +/* Called when program/activity is created */ +extern "C" void Java_com_mcserver_MCServerActivity_NativeOnCreate( JNIEnv* env, jobject thiz ) +{ + g_CriticalSection.Lock(); + g_CurrentJNIEnv = env; + g_JavaThread = thiz; + //if( !cLogger::GetSingletonPtr() ) new cLogger(); + __android_log_print(ANDROID_LOG_ERROR,"MCServer", "%s", "Logging from C++!"); + g_CriticalSection.Unlock(); + + //CallJavaFunction_Void_Void(g_JavaActivity, "TestTest" ); + //CallJavaFunction_Void_String(g_JavaThread, "AddToLog", "herpderpderp!!" ); + + mkdir("/sdcard/mcserver", S_IRWXU | S_IRWXG | S_IRWXO); + +// __android_log_print(ANDROID_LOG_ERROR,"MCServer", "%s", "Before mainthread"); +// pMainThread = new cMainThread(); +// pMainThread->Start(); +// __android_log_print(ANDROID_LOG_ERROR,"MCServer", "%s", "AFter mainthread"); + + pRoot = new cRoot(); + pRoot->Start(); + delete pRoot; pRoot = NULL; +} + + + + + +extern "C" void Java_com_mcserver_MCServerActivity_NativeCleanUp( JNIEnv* env, jobject thiz ) +{ + g_CriticalSection.Lock(); + g_CurrentJNIEnv = env; + g_JavaThread = thiz; + g_CriticalSection.Unlock(); + + __android_log_print(ANDROID_LOG_ERROR,"MCServer", "pRoot: %p", pRoot); + if( pRoot != NULL ) + { + pRoot->ServerCommand("stop"); + } +// pMainThread->Stop(); +// delete pMainThread; pMainThread = NULL; +} + + + + +extern "C" jboolean Java_com_mcserver_MCServerActivity_NativeIsServerRunning( JNIEnv* env, jobject thiz ) +{ + return pRoot != NULL; +} \ No newline at end of file diff --git a/Android/proguard-project.txt b/Android/proguard-project.txt new file mode 100644 index 000000000..f2fe1559a --- /dev/null +++ b/Android/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/Android/project.properties b/Android/project.properties new file mode 100644 index 000000000..7a6518b77 --- /dev/null +++ b/Android/project.properties @@ -0,0 +1,14 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}\tools\proguard\proguard-android.txt:proguard-project.txt + +# Project target. +target=android-12 diff --git a/Android/res/drawable-hdpi/ic_launcher.png b/Android/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 000000000..96a442e5b Binary files /dev/null and b/Android/res/drawable-hdpi/ic_launcher.png differ diff --git a/Android/res/drawable-ldpi/ic_launcher.png b/Android/res/drawable-ldpi/ic_launcher.png new file mode 100644 index 000000000..99238729d Binary files /dev/null and b/Android/res/drawable-ldpi/ic_launcher.png differ diff --git a/Android/res/drawable-mdpi/ic_launcher.png b/Android/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 000000000..359047dfa Binary files /dev/null and b/Android/res/drawable-mdpi/ic_launcher.png differ diff --git a/Android/res/drawable-xhdpi/ic_launcher.png b/Android/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 000000000..71c6d760f Binary files /dev/null and b/Android/res/drawable-xhdpi/ic_launcher.png differ diff --git a/Android/res/layout/main.xml b/Android/res/layout/main.xml new file mode 100644 index 000000000..dd5ee0e8f --- /dev/null +++ b/Android/res/layout/main.xml @@ -0,0 +1,46 @@ + + + + + +