浏览代码

Somehow it works but JNI signatures were incorrect

Andrii Danylchenko 2 年之前
父节点
当前提交
4cfc93d2da
共有 3 个文件被更改,包括 16 次插入5 次删除
  1. 4 4
      client/Client.cpp
  2. 1 1
      lib/CAndroidVMHelper.cpp
  3. 11 0
      server/CVCMIServer.cpp

+ 4 - 4
client/Client.cpp

@@ -771,14 +771,14 @@ void CClient::reinitScripting()
 }
 
 #ifdef VCMI_ANDROID
-extern "C" JNIEXPORT void JNICALL Java_eu_vcmi_vcmi_NativeMethods_clientSetupJNI(JNIEnv * env, jobject cls)
+extern "C" JNIEXPORT void JNICALL Java_eu_vcmi_vcmi_NativeMethods_clientSetupJNI(JNIEnv * env, jclass cls)
 {
 	logNetwork->info("Received clientSetupJNI");
 
 	CAndroidVMHelper::cacheVM(env);
 }
 
-extern "C" JNIEXPORT void JNICALL Java_eu_vcmi_vcmi_NativeMethods_notifyServerClosed(JNIEnv * env, jobject cls)
+extern "C" JNIEXPORT void JNICALL Java_eu_vcmi_vcmi_NativeMethods_notifyServerClosed(JNIEnv * env, jclass cls)
 {
 	logNetwork->info("Received server closed signal");
 	if (CSH) {
@@ -786,13 +786,13 @@ extern "C" JNIEXPORT void JNICALL Java_eu_vcmi_vcmi_NativeMethods_notifyServerCl
 	}
 }
 
-extern "C" JNIEXPORT void JNICALL Java_eu_vcmi_vcmi_NativeMethods_notifyServerReady(JNIEnv * env, jobject cls)
+extern "C" JNIEXPORT void JNICALL Java_eu_vcmi_vcmi_NativeMethods_notifyServerReady(JNIEnv * env, jclass cls)
 {
 	logNetwork->info("Received server ready signal");
 	androidTestServerReadyFlag.store(true);
 }
 
-extern "C" JNIEXPORT bool JNICALL Java_eu_vcmi_vcmi_NativeMethods_tryToSaveTheGame(JNIEnv * env, jobject cls)
+extern "C" JNIEXPORT jboolean JNICALL Java_eu_vcmi_vcmi_NativeMethods_tryToSaveTheGame(JNIEnv * env, jclass cls)
 {
 	logGlobal->info("Received emergency save game request");
 	if(!LOCPLINT || !LOCPLINT->cb)

+ 1 - 1
lib/CAndroidVMHelper.cpp

@@ -96,7 +96,7 @@ jclass CAndroidVMHelper::findClass(const std::string & name, bool classloaded)
 	return get()->FindClass(name.c_str());
 }
 
-extern "C" JNIEXPORT void JNICALL Java_eu_vcmi_vcmi_NativeMethods_initClassloader(JNIEnv * baseEnv, jobject * cls)
+extern "C" JNIEXPORT void JNICALL Java_eu_vcmi_vcmi_NativeMethods_initClassloader(JNIEnv * baseEnv, jclass cls)
 {
 	CAndroidVMHelper::cacheVM(baseEnv);
 	CAndroidVMHelper envHelper;

+ 11 - 0
server/CVCMIServer.cpp

@@ -28,6 +28,8 @@
 #include "../lib/mapping/CMap.h"
 #include "../lib/rmg/CMapGenOptions.h"
 #ifdef VCMI_ANDROID
+#include <jni.h>
+#include <android/log.h>
 #include "lib/CAndroidVMHelper.h"
 #elif !defined(VCMI_IOS)
 #include "../lib/Interprocess.h"
@@ -1118,12 +1120,21 @@ int main(int argc, char * argv[])
 }
 
 #ifdef VCMI_ANDROID
+
+extern "C" JNIEXPORT void JNICALL Java_eu_vcmi_vcmi_NativeMethods_createServer(JNIEnv * env, jclass cls)
+{
+	__android_log_write(ANDROID_LOG_INFO, "VCMI", "Got jni call to init server");
+	CAndroidVMHelper::cacheVM(env);
+	CVCMIServer::create();
+}
+
 void CVCMIServer::create()
 {
 	const char * foo = "android-server";
 	std::vector<const void *> argv = {foo};
 	main(argv.size(), reinterpret_cast<char **>(const_cast<void **>(&*argv.begin())));
 }
+
 #elif defined(SINGLE_PROCESS_APP)
 void CVCMIServer::create(boost::condition_variable * cond, const std::vector<std::string> & args)
 {