diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/AndroidManifest.xml b/app/AndroidManifest.xml index 0466c35..7f74688 100644 --- a/app/AndroidManifest.xml +++ b/app/AndroidManifest.xml @@ -12,7 +12,9 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 8ec6ed9..ad8d19b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -84,6 +84,13 @@ android.applicationVariants.all { variant -> include "js/**" into outputDir } + def sourceDirUnity = "/Users/zhl/Documents/workspace/unity/first/android/first/src/main/assets/" + + copy { + from "${sourceDirUnity}" + include "bin/**" + into outputDir + } // copy { // from "${sourceDir}/main.js" @@ -101,4 +108,5 @@ dependencies { implementation project(':libcocos2dx') implementation "androidx.appcompat:appcompat:1.0.2" + implementation files('../libs/unity-classes.jar') } \ No newline at end of file diff --git a/app/libs/arm64-v8a/libil2cpp.so b/app/libs/arm64-v8a/libil2cpp.so new file mode 100755 index 0000000..38cea66 Binary files /dev/null and b/app/libs/arm64-v8a/libil2cpp.so differ diff --git a/app/libs/arm64-v8a/libmain.so b/app/libs/arm64-v8a/libmain.so new file mode 100755 index 0000000..7b286c5 Binary files /dev/null and b/app/libs/arm64-v8a/libmain.so differ diff --git a/app/libs/arm64-v8a/libunity.so b/app/libs/arm64-v8a/libunity.so new file mode 100755 index 0000000..994c695 Binary files /dev/null and b/app/libs/arm64-v8a/libunity.so differ diff --git a/app/libs/armeabi-v7a/libMonoPosixHelper.so b/app/libs/armeabi-v7a/libMonoPosixHelper.so new file mode 100755 index 0000000..feeba3f Binary files /dev/null and b/app/libs/armeabi-v7a/libMonoPosixHelper.so differ diff --git a/app/libs/armeabi-v7a/libil2cpp.so b/app/libs/armeabi-v7a/libil2cpp.so new file mode 100755 index 0000000..7ca877e Binary files /dev/null and b/app/libs/armeabi-v7a/libil2cpp.so differ diff --git a/app/libs/armeabi-v7a/libmain.so b/app/libs/armeabi-v7a/libmain.so new file mode 100755 index 0000000..e76b1ce Binary files /dev/null and b/app/libs/armeabi-v7a/libmain.so differ diff --git a/app/libs/armeabi-v7a/libmonobdwgc-2.0.so b/app/libs/armeabi-v7a/libmonobdwgc-2.0.so new file mode 100755 index 0000000..3368ceb Binary files /dev/null and b/app/libs/armeabi-v7a/libmonobdwgc-2.0.so differ diff --git a/app/libs/armeabi-v7a/libunity.so b/app/libs/armeabi-v7a/libunity.so new file mode 100755 index 0000000..ef3873b Binary files /dev/null and b/app/libs/armeabi-v7a/libunity.so differ diff --git a/app/libs/x86/libMonoPosixHelper.so b/app/libs/x86/libMonoPosixHelper.so new file mode 100755 index 0000000..fd9f1d1 Binary files /dev/null and b/app/libs/x86/libMonoPosixHelper.so differ diff --git a/app/libs/x86/libil2cpp.so b/app/libs/x86/libil2cpp.so new file mode 100755 index 0000000..bea8341 Binary files /dev/null and b/app/libs/x86/libil2cpp.so differ diff --git a/app/libs/x86/libmain.so b/app/libs/x86/libmain.so new file mode 100755 index 0000000..6bec807 Binary files /dev/null and b/app/libs/x86/libmain.so differ diff --git a/app/libs/x86/libmonobdwgc-2.0.so b/app/libs/x86/libmonobdwgc-2.0.so new file mode 100755 index 0000000..82c8d42 Binary files /dev/null and b/app/libs/x86/libmonobdwgc-2.0.so differ diff --git a/app/libs/x86/libunity.so b/app/libs/x86/libunity.so new file mode 100755 index 0000000..99007aa Binary files /dev/null and b/app/libs/x86/libunity.so differ diff --git a/app/src/com/fitchgc/headlesscocos/MainActivity.java b/app/src/com/fitchgc/headlesscocos/MainActivity.java index fd1af48..148aed1 100644 --- a/app/src/com/fitchgc/headlesscocos/MainActivity.java +++ b/app/src/com/fitchgc/headlesscocos/MainActivity.java @@ -1,20 +1,41 @@ package com.fitchgc.headlesscocos; import android.app.Activity; +import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; +import android.content.res.Configuration; import android.os.Bundle; +import android.view.KeyEvent; +import android.view.MotionEvent; +import android.view.Window; + +import com.unity3d.player.UnityPlayer; import org.cocos2dx.lib.Cocos2dxHelper; import org.cocos2dx.lib.CocosJSHelper; public class MainActivity extends Activity implements Cocos2dxHelper.Cocos2dxHelperListener { + protected UnityPlayer mUnityPlayer; + protected String updateUnityCommandLineArguments(String cmdLine) + { + return cmdLine; + } @Override protected void onCreate(Bundle savedInstanceState) { + requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); + + String cmdLine = updateUnityCommandLineArguments(getIntent().getStringExtra("unity")); + getIntent().putExtra("unity", cmdLine); + + mUnityPlayer = new UnityPlayer(this); + setContentView(mUnityPlayer); + mUnityPlayer.requestFocus(); + +// setContentView(R.layout.activity_main); onLoadNativeLibraries(); Cocos2dxHelper.init(this); CocosJSHelper.initJSEnv(getApplicationContext()); @@ -40,4 +61,94 @@ public class MainActivity extends Activity implements Cocos2dxHelper.Cocos2dxHel public void runOnGLThread(Runnable pRunnable) { } + + // begin for unity + @Override protected void onNewIntent(Intent intent) + { + // To support deep linking, we need to make sure that the client can get access to + // the last sent intent. The clients access this through a JNI api that allows them + // to get the intent set on launch. To update that after launch we have to manually + // replace the intent with the one caught here. + setIntent(intent); + } + + // Quit Unity + @Override protected void onDestroy () + { + mUnityPlayer.destroy(); + super.onDestroy(); + } + + // Pause Unity + @Override protected void onPause() + { + super.onPause(); + mUnityPlayer.pause(); + } + + // Resume Unity + @Override protected void onResume() + { + super.onResume(); + mUnityPlayer.resume(); + } + + @Override protected void onStart() + { + super.onStart(); + mUnityPlayer.start(); + } + + @Override protected void onStop() + { + super.onStop(); + mUnityPlayer.stop(); + } + + // Low Memory Unity + @Override public void onLowMemory() + { + super.onLowMemory(); + mUnityPlayer.lowMemory(); + } + + // Trim Memory Unity + @Override public void onTrimMemory(int level) + { + super.onTrimMemory(level); + if (level == TRIM_MEMORY_RUNNING_CRITICAL) + { + mUnityPlayer.lowMemory(); + } + } + + // This ensures the layout will be correct. + @Override public void onConfigurationChanged(Configuration newConfig) + { + super.onConfigurationChanged(newConfig); + mUnityPlayer.configurationChanged(newConfig); + } + + // Notify Unity of the focus change. + @Override public void onWindowFocusChanged(boolean hasFocus) + { + super.onWindowFocusChanged(hasFocus); + mUnityPlayer.windowFocusChanged(hasFocus); + } + + // For some reason the multiple keyevent type is not supported by the ndk. + // Force event injection by overriding dispatchKeyEvent(). + @Override public boolean dispatchKeyEvent(KeyEvent event) + { + if (event.getAction() == KeyEvent.ACTION_MULTIPLE) + return mUnityPlayer.injectEvent(event); + return super.dispatchKeyEvent(event); + } + + // Pass any events not handled by (unfocused) views straight to UnityPlayer + @Override public boolean onKeyUp(int keyCode, KeyEvent event) { return mUnityPlayer.injectEvent(event); } + @Override public boolean onKeyDown(int keyCode, KeyEvent event) { return mUnityPlayer.injectEvent(event); } + @Override public boolean onTouchEvent(MotionEvent event) { return mUnityPlayer.injectEvent(event); } + /*API12*/ public boolean onGenericMotionEvent(MotionEvent event) { return mUnityPlayer.injectEvent(event); } + } \ No newline at end of file diff --git a/libs/unity-classes.jar b/libs/unity-classes.jar new file mode 100644 index 0000000..a073e2e Binary files /dev/null and b/libs/unity-classes.jar differ diff --git a/res/values/strings.xml b/res/values/strings.xml index 36ae9a7..2486a46 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1,3 +1,4 @@ HeadlessCocos + Game view \ No newline at end of file diff --git a/res/values/styles.xml b/res/values/styles.xml new file mode 100644 index 0000000..e334a5f --- /dev/null +++ b/res/values/styles.xml @@ -0,0 +1,12 @@ + + + + + +