Переглянути джерело

1.提交cocoscreator编译成android的项目

FailedToRead 3 роки тому
коміт
db8b63237a
82 змінених файлів з 26009 додано та 0 видалено
  1. 7 0
      .gitignore
  2. 3 0
      .idea/.gitignore
  3. BIN
      .idea/caches/build_file_checksums.ser
  4. 6 0
      .idea/compiler.xml
  5. 26 0
      .idea/gradle.xml
  6. 40 0
      .idea/jarRepositories.xml
  7. 9 0
      .idea/misc.xml
  8. 12 0
      .idea/modules.xml
  9. 56 0
      .idea/modules/-1880156357/proj.android-studio.libcocos2dx.iml
  10. 221 0
      .idea/modules/app/proj.android-studio.efunbox-ott-launcher.iml
  11. 232 0
      .idea/modules/game/proj.android-studio.game.iml
  12. 39 0
      .idea/modules/instantapp/proj.android-studio.instantapp.iml
  13. 20 0
      .idea/modules/proj.android-studio.iml
  14. 3006 0
      app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build.json
  15. 65 0
      app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_mini.json
  16. 21 0
      app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_command.txt
  17. 816 0
      app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_output.txt
  18. 3006 0
      app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build.json
  19. 65 0
      app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build_mini.json
  20. 21 0
      app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_command.txt
  21. 811 0
      app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_output.txt
  22. 2 0
      app/.gitignore
  23. 40 0
      app/AndroidManifest.xml
  24. 136 0
      app/build.gradle
  25. 2 0
      app/jni/Android.mk
  26. 2 0
      app/jni/Application.mk
  27. 2 0
      app/local.properties
  28. 44 0
      app/proguard-rules.pro
  29. 11 0
      app/project.properties
  30. 8 0
      build-cfg.json
  31. 30 0
      build.gradle
  32. 3006 0
      game/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build.json
  33. 65 0
      game/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_mini.json
  34. 21 0
      game/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_command.txt
  35. 816 0
      game/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_output.txt
  36. 3006 0
      game/.externalNativeBuild/ndkBuild/debugFeature/armeabi-v7a/android_gradle_build.json
  37. 65 0
      game/.externalNativeBuild/ndkBuild/debugFeature/armeabi-v7a/android_gradle_build_mini.json
  38. 21 0
      game/.externalNativeBuild/ndkBuild/debugFeature/armeabi-v7a/ndkBuild_build_command.txt
  39. 816 0
      game/.externalNativeBuild/ndkBuild/debugFeature/armeabi-v7a/ndkBuild_build_output.txt
  40. 3006 0
      game/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build.json
  41. 65 0
      game/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build_mini.json
  42. 21 0
      game/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_command.txt
  43. 811 0
      game/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_output.txt
  44. 3006 0
      game/.externalNativeBuild/ndkBuild/releaseFeature/armeabi-v7a/android_gradle_build.json
  45. 65 0
      game/.externalNativeBuild/ndkBuild/releaseFeature/armeabi-v7a/android_gradle_build_mini.json
  46. 21 0
      game/.externalNativeBuild/ndkBuild/releaseFeature/armeabi-v7a/ndkBuild_build_command.txt
  47. 811 0
      game/.externalNativeBuild/ndkBuild/releaseFeature/armeabi-v7a/ndkBuild_build_output.txt
  48. 1 0
      game/.gitignore
  49. 55 0
      game/AndroidManifest.xml
  50. 136 0
      game/build.gradle
  51. 2 0
      game/jni/Android.mk
  52. 5 0
      game/jni/Application.mk
  53. 45 0
      game/proguard-rules.pro
  54. 115 0
      game/src/org/cocos2dx/javascript/InstantHelper.java
  55. 46 0
      gradle.properties
  56. BIN
      gradle/wrapper/gradle-wrapper.jar
  57. 6 0
      gradle/wrapper/gradle-wrapper.properties
  58. 164 0
      gradlew
  59. 90 0
      gradlew.bat
  60. 1 0
      instantapp/.gitignore
  61. 5 0
      instantapp/build.gradle
  62. 23 0
      jni/CocosAndroid.mk
  63. 50 0
      jni/CocosApplication.mk
  64. 53 0
      jni/hellojavascript/main.cpp
  65. BIN
      res/mipmap-hdpi/ic_launcher.png
  66. BIN
      res/mipmap-mdpi/ic_launcher.png
  67. BIN
      res/mipmap-xhdpi/ic_launcher.png
  68. BIN
      res/mipmap-xxhdpi/ic_launcher.png
  69. 3 0
      res/values/strings.xml
  70. 4 0
      settings.gradle
  71. 152 0
      src/org/cocos2dx/javascript/AppActivity.java
  72. 179 0
      src/org/cocos2dx/javascript/SDKWrapper.java
  73. 23 0
      src/org/cocos2dx/javascript/application/EApplication.java
  74. 14 0
      src/org/cocos2dx/javascript/bean/AppInfo.java
  75. 59 0
      src/org/cocos2dx/javascript/presenter/MainPresenter.java
  76. 40 0
      src/org/cocos2dx/javascript/service/SDKClass.java
  77. 24 0
      src/org/cocos2dx/javascript/service/SDKInterface.java
  78. 7 0
      src/org/cocos2dx/javascript/util/Consts.java
  79. 172 0
      src/org/cocos2dx/javascript/util/DeviceUtil.java
  80. 75 0
      src/org/cocos2dx/javascript/util/ImageUtil.java
  81. 9 0
      src/org/cocos2dx/javascript/util/Logger.java
  82. 70 0
      src/org/cocos2dx/javascript/util/PackageUtil.java

+ 7 - 0
.gitignore

@@ -0,0 +1,7 @@
+.gradle
+/local.properties
+/.idea/workspace.xml
+/.idea/libraries
+.DS_Store
+/build
+/captures

+ 3 - 0
.idea/.gitignore

@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml

BIN
.idea/caches/build_file_checksums.ser


+ 6 - 0
.idea/compiler.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <bytecodeTargetLevel target="1.8" />
+  </component>
+</project>

+ 26 - 0
.idea/gradle.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="GradleMigrationSettings" migrationVersion="1" />
+  <component name="GradleSettings">
+    <option name="linkedExternalProjectsSettings">
+      <GradleProjectSettings>
+        <option name="testRunner" value="PLATFORM" />
+        <option name="distributionType" value="DEFAULT_WRAPPED" />
+        <option name="externalProjectPath" value="$PROJECT_DIR$" />
+        <option name="gradleHome" value="$APPLICATION_HOME_DIR$/gradle" />
+        <option name="gradleJvm" value="1.8 (2)" />
+        <option name="modules">
+          <set>
+            <option value="$PROJECT_DIR$/../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/libcocos2dx" />
+            <option value="$PROJECT_DIR$" />
+            <option value="$PROJECT_DIR$/app" />
+            <option value="$PROJECT_DIR$/game" />
+            <option value="$PROJECT_DIR$/instantapp" />
+          </set>
+        </option>
+        <option name="resolveModulePerSourceSet" value="false" />
+        <option name="useQualifiedModuleNames" value="true" />
+      </GradleProjectSettings>
+    </option>
+  </component>
+</project>

+ 40 - 0
.idea/jarRepositories.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="BintrayJCenter" />
+      <option name="name" value="BintrayJCenter" />
+      <option name="url" value="https://jcenter.bintray.com/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="Google" />
+      <option name="name" value="Google" />
+      <option name="url" value="https://dl.google.com/dl/android/maven2/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="G:\AndroidStudio\sdk\extras\android\m2repository" />
+      <option name="name" value="G:\AndroidStudio\sdk\extras\android\m2repository" />
+      <option name="url" value="file:/$PROJECT_DIR$/../../../../../../AndroidStudio/sdk/extras/android/m2repository/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="G:\AndroidStudio\sdk\extras\m2repository" />
+      <option name="name" value="G:\AndroidStudio\sdk\extras\m2repository" />
+      <option name="url" value="file:/$PROJECT_DIR$/../../../../../../AndroidStudio/sdk/extras/m2repository/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="G:\AndroidStudio\sdk\extras\google\m2repository" />
+      <option name="name" value="G:\AndroidStudio\sdk\extras\google\m2repository" />
+      <option name="url" value="file:/$PROJECT_DIR$/../../../../../../AndroidStudio/sdk/extras/google/m2repository/" />
+    </remote-repository>
+  </component>
+</project>

+ 9 - 0
.idea/misc.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/build/classes" />
+  </component>
+  <component name="ProjectType">
+    <option name="id" value="Android" />
+  </component>
+</project>

+ 12 - 0
.idea/modules.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/proj.android-studio.iml" filepath="$PROJECT_DIR$/.idea/modules/proj.android-studio.iml" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/app/proj.android-studio.efunbox-ott-launcher.iml" filepath="$PROJECT_DIR$/.idea/modules/app/proj.android-studio.efunbox-ott-launcher.iml" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/game/proj.android-studio.game.iml" filepath="$PROJECT_DIR$/.idea/modules/game/proj.android-studio.game.iml" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/instantapp/proj.android-studio.instantapp.iml" filepath="$PROJECT_DIR$/.idea/modules/instantapp/proj.android-studio.instantapp.iml" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/-1880156357/proj.android-studio.libcocos2dx.iml" filepath="$PROJECT_DIR$/.idea/modules/-1880156357/proj.android-studio.libcocos2dx.iml" />
+    </modules>
+  </component>
+</project>

Різницю між файлами не показано, бо вона завелика
+ 56 - 0
.idea/modules/-1880156357/proj.android-studio.libcocos2dx.iml


+ 221 - 0
.idea/modules/app/proj.android-studio.efunbox-ott-launcher.iml

@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id=":efunbox-ott-launcher" external.linked.project.path="$MODULE_DIR$/../../../app" external.root.project.path="$MODULE_DIR$/../../.." external.system.id="GRADLE" external.system.module.group="proj.android-studio" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="android-gradle" name="Android-Gradle">
+      <configuration>
+        <option name="GRADLE_PROJECT_PATH" value=":efunbox-ott-launcher" />
+        <option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.2.0" />
+        <option name="LAST_KNOWN_AGP_VERSION" value="3.2.0" />
+      </configuration>
+    </facet>
+    <facet type="native-android-gradle" name="Native-Android-Gradle">
+      <configuration>
+        <option name="SELECTED_BUILD_VARIANT" value="debug-armeabi-v7a" />
+      </configuration>
+    </facet>
+    <facet type="android" name="Android">
+      <configuration>
+        <option name="SELECTED_BUILD_VARIANT" value="debug" />
+        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
+        <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
+        <afterSyncTasks>
+          <task>generateDebugSources</task>
+        </afterSyncTasks>
+        <option name="ALLOW_USER_CONFIGURATION" value="false" />
+        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
+        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/main/res;file://$MODULE_DIR$/../../../res;file://$MODULE_DIR$/../../../app/res;file://$MODULE_DIR$/../../../app/src/debug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/debug" />
+        <option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../app/src/androidTest/res;file://$MODULE_DIR$/../../../app/src/androidTestDebug/res;file://$MODULE_DIR$/../../../app/build/generated/res/rs/androidTest/debug;file://$MODULE_DIR$/../../../app/build/generated/res/resValues/androidTest/debug" />
+        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
+    <output url="file://$MODULE_DIR$/../../../app/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" />
+    <output-test url="file://$MODULE_DIR$/../../../app/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$/../../../../../../../../../AndroidStudio/sdk/ndk-bundle/sources/android/cpufeatures">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../AndroidStudio/sdk/ndk-bundle/sources/android/cpufeatures" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/2d">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/2d" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio/android">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio/android" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio/android/audio_utils">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio/android/audio_utils" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio/android/utils">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio/android/utils" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/base">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/base" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones-creator-support">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones-creator-support" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/animation">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/animation" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/armature">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/armature" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/core">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/core" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/event">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/event" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/factory">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/factory" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/geom">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/geom" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/model">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/model" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/parser">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/parser" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/particle">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/particle" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/spine">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/spine" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/spine-creator-support">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/spine-creator-support" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/math">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/math" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/network">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/network" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/jni">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/jni" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/gfx">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/gfx" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/renderer">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/renderer" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/scene">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/scene" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/scene/assembler">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/scene/assembler" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/auto">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/auto" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/event">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/event" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8/debugger">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8/debugger" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/manual">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/manual" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/storage/local-storage">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/storage/local-storage" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/ui/edit-box">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/ui/edit-box" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/ui/videoplayer">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/ui/videoplayer" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/ui/webview">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/ui/webview" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/extensions/assets-manager">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/extensions/assets-manager" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/ConvertUTF">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/ConvertUTF" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/edtaa3func">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/edtaa3func" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/pvmp3dec/src">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/pvmp3dec/src" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/pvmp3dec/src/asm">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/pvmp3dec/src/asm" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/tinyxml2">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/tinyxml2" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/tremolo/Tremolo">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/tremolo/Tremolo" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/unzip">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/unzip" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/xxtea">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/xxtea" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../Classes">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../Classes" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../app">
+      <sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/rs/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/apt/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/res/resValues/debug" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/res/rs/debug" type="java-resource" />
+      <excludeFolder url="file://$MODULE_DIR$/../../../app/.cxx" />
+      <excludeFolder url="file://$MODULE_DIR$/../../../app/.externalNativeBuild" />
+      <excludeFolder url="file://$MODULE_DIR$/../../../app/.gradle" />
+      <excludeFolder url="file://$MODULE_DIR$/../../../app/build" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../jni/hellojavascript">
+      <sourceFolder url="file://$MODULE_DIR$/../../../jni/hellojavascript" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../res">
+      <sourceFolder url="file://$MODULE_DIR$/../../../res" type="java-resource" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../src">
+      <sourceFolder url="file://$MODULE_DIR$/../../../src" isTestSource="false" />
+    </content>
+    <orderEntry type="jdk" jdkName="Android API 31 Platform" jdkType="Android SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Gradle: ./../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/java/libs/com.android.vending.expansion.zipfile.jar" level="project" />
+    <orderEntry type="library" name="Gradle: ./../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/java/libs/okhttp-3.12.7.jar" level="project" />
+    <orderEntry type="library" name="Gradle: ./../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/java/libs/okio-1.15.0.jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.6" level="project" />
+    <orderEntry type="library" name="Gradle: org.slf4j:slf4j-android:1.7.21" level="project" />
+    <orderEntry type="library" name="Gradle: org.slf4j:slf4j-api:1.7.21" level="project" />
+    <orderEntry type="library" name="Gradle: com.danikula:videocache:2.7.1@aar" level="project" />
+    <orderEntry type="library" name="Gradle: tv.danmaku.ijk.media:ijkplayer-java:0.8.8@aar" level="project" />
+    <orderEntry type="module" module-name="proj.android-studio.libcocos2dx" />
+  </component>
+</module>

+ 232 - 0
.idea/modules/game/proj.android-studio.game.iml

@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id=":game" external.linked.project.path="$MODULE_DIR$/../../../game" external.root.project.path="$MODULE_DIR$/../../.." external.system.id="GRADLE" external.system.module.group="proj.android-studio" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="android-gradle" name="Android-Gradle">
+      <configuration>
+        <option name="GRADLE_PROJECT_PATH" value=":game" />
+        <option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.2.0" />
+        <option name="LAST_KNOWN_AGP_VERSION" value="3.2.0" />
+      </configuration>
+    </facet>
+    <facet type="native-android-gradle" name="Native-Android-Gradle">
+      <configuration>
+        <option name="SELECTED_BUILD_VARIANT" value="debug-armeabi-v7a" />
+      </configuration>
+    </facet>
+    <facet type="android" name="Android">
+      <configuration>
+        <option name="SELECTED_BUILD_VARIANT" value="debug" />
+        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
+        <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
+        <afterSyncTasks>
+          <task>generateDebugSources</task>
+        </afterSyncTasks>
+        <option name="ALLOW_USER_CONFIGURATION" value="false" />
+        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
+        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../game/src/main/res;file://$MODULE_DIR$/../../../res;file://$MODULE_DIR$/../../../game/res;file://$MODULE_DIR$/../../../game/src/debug/res;file://$MODULE_DIR$/../../../game/build/generated/res/rs/debug;file://$MODULE_DIR$/../../../game/build/generated/res/resValues/debug" />
+        <option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../game/src/androidTest/res;file://$MODULE_DIR$/../../../game/src/androidTestDebug/res;file://$MODULE_DIR$/../../../game/build/generated/res/rs/androidTest/debug;file://$MODULE_DIR$/../../../game/build/generated/res/resValues/androidTest/debug" />
+        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
+        <option name="PROJECT_TYPE" value="5" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
+    <output url="file://$MODULE_DIR$/../../../game/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes" />
+    <output-test url="file://$MODULE_DIR$/../../../game/build/intermediates/javac/debugUnitTest/compileDebugUnitTestJavaWithJavac/classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$/../../../../../../../../../AndroidStudio/sdk/ndk-bundle/sources/android/cpufeatures">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../AndroidStudio/sdk/ndk-bundle/sources/android/cpufeatures" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/2d">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/2d" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio/android">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio/android" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio/android/audio_utils">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio/android/audio_utils" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio/android/utils">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/audio/android/utils" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/base">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/base" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones-creator-support">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones-creator-support" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/animation">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/animation" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/armature">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/armature" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/core">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/core" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/event">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/event" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/factory">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/factory" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/geom">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/geom" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/model">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/model" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/parser">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/dragonbones/parser" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/particle">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/particle" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/spine">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/spine" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/spine-creator-support">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/editor-support/spine-creator-support" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/math">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/math" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/network">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/network" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/jni">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/jni" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/gfx">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/gfx" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/renderer">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/renderer" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/scene">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/scene" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/scene/assembler">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/renderer/scene/assembler" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/auto">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/auto" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/event">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/event" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8/debugger">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8/debugger" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/manual">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/scripting/js-bindings/manual" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/storage/local-storage">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/storage/local-storage" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/ui/edit-box">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/ui/edit-box" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/ui/videoplayer">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/ui/videoplayer" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/ui/webview">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/ui/webview" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/extensions/assets-manager">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/extensions/assets-manager" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/ConvertUTF">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/ConvertUTF" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/edtaa3func">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/edtaa3func" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/pvmp3dec/src">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/pvmp3dec/src" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/pvmp3dec/src/asm">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/pvmp3dec/src/asm" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/tinyxml2">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/tinyxml2" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/tremolo/Tremolo">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/tremolo/Tremolo" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/unzip">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/unzip" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/xxtea">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external/sources/xxtea" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../../Classes">
+      <sourceFolder url="file://$MODULE_DIR$/../../../../Classes" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../game">
+      <sourceFolder url="file://$MODULE_DIR$/../../../game/src" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/../../../game/build/generated/res/resValues/debug" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/../../../game/build/generated/source/rs/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/../../../game/build/generated/res/rs/debug" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/../../../game/build/generated/source/apt/debug" isTestSource="false" generated="true" />
+      <sourceFolder url="file://$MODULE_DIR$/../../../game/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
+      <excludeFolder url="file://$MODULE_DIR$/../../../game/.cxx" />
+      <excludeFolder url="file://$MODULE_DIR$/../../../game/.externalNativeBuild" />
+      <excludeFolder url="file://$MODULE_DIR$/../../../game/.gradle" />
+      <excludeFolder url="file://$MODULE_DIR$/../../../game/build" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../../jni/hellojavascript">
+      <sourceFolder url="file://$MODULE_DIR$/../../../jni/hellojavascript" isTestSource="false" />
+    </content>
+    <orderEntry type="jdk" jdkName="Android API 31 Platform" jdkType="Android SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Gradle: ./../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/java/libs/com.android.vending.expansion.zipfile.jar" level="project" />
+    <orderEntry type="library" name="Gradle: ./../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/java/libs/okhttp-3.12.7.jar" level="project" />
+    <orderEntry type="library" name="Gradle: ./../../../../../../CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/java/libs/okio-1.15.0.jar" level="project" />
+    <orderEntry type="library" name="Gradle: com.google.code.gson:gson:2.8.6" level="project" />
+    <orderEntry type="library" name="Gradle: org.slf4j:slf4j-android:1.7.21" level="project" />
+    <orderEntry type="library" name="Gradle: org.slf4j:slf4j-api:1.7.21" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:support-annotations:26.1.0" level="project" />
+    <orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: android.arch.core:common:1.0.0" level="project" />
+    <orderEntry type="library" name="Gradle: com.google.android.instantapps:instantapps:1.1.0@aar" level="project" />
+    <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-instantapps:16.0.0@aar" level="project" />
+    <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-base:15.0.1@aar" level="project" />
+    <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-tasks:15.0.1@aar" level="project" />
+    <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-basement:15.0.1@aar" level="project" />
+    <orderEntry type="library" name="Gradle: com.danikula:videocache:2.7.1@aar" level="project" />
+    <orderEntry type="library" name="Gradle: tv.danmaku.ijk.media:ijkplayer-java:0.8.8@aar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:support-v4:26.1.0@aar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:support-media-compat:26.1.0@aar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:support-fragment:26.1.0@aar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:support-core-utils:26.1.0@aar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:support-core-ui:26.1.0@aar" level="project" />
+    <orderEntry type="library" name="Gradle: com.android.support:support-compat:26.1.0@aar" level="project" />
+    <orderEntry type="library" name="Gradle: android.arch.lifecycle:runtime:1.0.0@aar" level="project" />
+    <orderEntry type="module" module-name="proj.android-studio.libcocos2dx" />
+  </component>
+</module>

+ 39 - 0
.idea/modules/instantapp/proj.android-studio.instantapp.iml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id=":instantapp" external.linked.project.path="$MODULE_DIR$/../../../instantapp" external.root.project.path="$MODULE_DIR$/../../.." external.system.id="GRADLE" external.system.module.group="proj.android-studio" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="android-gradle" name="Android-Gradle">
+      <configuration>
+        <option name="GRADLE_PROJECT_PATH" value=":instantapp" />
+        <option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.2.0" />
+        <option name="LAST_KNOWN_AGP_VERSION" value="3.2.0" />
+      </configuration>
+    </facet>
+    <facet type="android" name="Android">
+      <configuration>
+        <option name="SELECTED_BUILD_VARIANT" value="debug" />
+        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
+        <option name="COMPILE_JAVA_TASK_NAME" value="dummyDebug" />
+        <afterSyncTasks>
+          <task>dummyDebug</task>
+        </afterSyncTasks>
+        <option name="ALLOW_USER_CONFIGURATION" value="false" />
+        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
+        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
+        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/../../../instantapp/src/main/res;file://$MODULE_DIR$/../../../instantapp/src/debug/res" />
+        <option name="TEST_RES_FOLDERS_RELATIVE_PATH" value="" />
+        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
+        <option name="PROJECT_TYPE" value="4" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6">
+    <output url="file://$MODULE_DIR$/../../.." />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$/../../../instantapp">
+      <excludeFolder url="file://$MODULE_DIR$/../../../instantapp/.gradle" />
+      <excludeFolder url="file://$MODULE_DIR$/../../../instantapp/build" />
+    </content>
+    <orderEntry type="jdk" jdkName="Android API 27 Platform" jdkType="Android SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 20 - 0
.idea/modules/proj.android-studio.iml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id="proj.android-studio" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="java-gradle" name="Java-Gradle">
+      <configuration>
+        <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/../../build" />
+        <option name="BUILDABLE" value="false" />
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$/../..">
+      <excludeFolder url="file://$MODULE_DIR$/../../.gradle" />
+      <excludeFolder url="file://$MODULE_DIR$/../../build" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

Різницю між файлами не показано, бо вона завелика
+ 3006 - 0
app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build.json


Різницю між файлами не показано, бо вона завелика
+ 65 - 0
app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_mini.json


+ 21 - 0
app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_command.txt

@@ -0,0 +1,21 @@
+Executable : G:\AndroidStudio\sdk\ndk-bundle\ndk-build.cmd
+arguments : 
+NDK_PROJECT_PATH=null
+APP_BUILD_SCRIPT=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\app\jni\Android.mk
+NDK_APPLICATION_MK=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\app\jni\Application.mk
+APP_ABI=armeabi-v7a
+NDK_ALL_ABIS=armeabi-v7a
+NDK_DEBUG=1
+APP_PLATFORM=android-21
+NDK_OUT=G:/WorkSpace/efunbox-build/jsb-link/frameworks/runtime-src/proj.android-studio/app/build/intermediates/ndkBuild/debug/obj
+NDK_LIBS_OUT=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\app\build\intermediates\ndkBuild\debug\lib
+NDK_TOOLCHAIN_VERSION=clang
+NDK_MODULE_PATH=G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x;G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x\cocos;G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x\external
+-j8
+NDK_DEBUG=1
+APP_SHORT_COMMANDS=false
+LOCAL_SHORT_COMMANDS=false
+-B
+-n
+jvmArgs : 
+

Різницю між файлами не показано, бо вона завелика
+ 816 - 0
app/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_output.txt


Різницю між файлами не показано, бо вона завелика
+ 3006 - 0
app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build.json


Різницю між файлами не показано, бо вона завелика
+ 65 - 0
app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build_mini.json


+ 21 - 0
app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_command.txt

@@ -0,0 +1,21 @@
+Executable : G:\AndroidStudio\sdk\ndk-bundle\ndk-build.cmd
+arguments : 
+NDK_PROJECT_PATH=null
+APP_BUILD_SCRIPT=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\app\jni\Android.mk
+NDK_APPLICATION_MK=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\app\jni\Application.mk
+APP_ABI=armeabi-v7a
+NDK_ALL_ABIS=armeabi-v7a
+NDK_DEBUG=0
+APP_PLATFORM=android-21
+NDK_OUT=G:/WorkSpace/efunbox-build/jsb-link/frameworks/runtime-src/proj.android-studio/app/build/intermediates/ndkBuild/release/obj
+NDK_LIBS_OUT=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\app\build\intermediates\ndkBuild\release\lib
+NDK_TOOLCHAIN_VERSION=clang
+NDK_MODULE_PATH=G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x;G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x\cocos;G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x\external
+-j8
+NDK_DEBUG=0
+APP_SHORT_COMMANDS=false
+LOCAL_SHORT_COMMANDS=false
+-B
+-n
+jvmArgs : 
+

Різницю між файлами не показано, бо вона завелика
+ 811 - 0
app/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_output.txt


+ 2 - 0
app/.gitignore

@@ -0,0 +1,2 @@
+/build
+/jniLibs

+ 40 - 0
app/AndroidManifest.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.edufound.ott.launcher"
+        android:installLocation="auto">
+
+    <uses-feature android:glEsVersion="0x00020000" />
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
+
+    <application
+            android:name="org.cocos2dx.javascript.application.EApplication"
+            android:allowBackup="true"
+            android:icon="@mipmap/ic_launcher"
+            android:label="@string/app_name"
+            android:usesCleartextTraffic="true">
+        <!-- Tell Cocos2dxActivity the name of our .so -->
+        <meta-data
+                android:name="android.app.lib_name"
+                android:value="cocos2djs" />
+
+        <activity
+                android:name="org.cocos2dx.javascript.AppActivity"
+                android:configChanges="orientation|keyboardHidden|screenSize|screenLayout"
+                android:label="@string/app_name"
+                android:launchMode="singleTask"
+                android:screenOrientation="sensorLandscape"
+                android:taskAffinity=""
+                android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>

+ 136 - 0
app/build.gradle

@@ -0,0 +1,136 @@
+import org.apache.tools.ant.taskdefs.condition.Os
+
+apply plugin: 'com.android.application'
+
+android {
+    compileSdkVersion PROP_COMPILE_SDK_VERSION.toInteger()
+    buildToolsVersion PROP_BUILD_TOOLS_VERSION
+
+    defaultConfig {
+        applicationId "com.edufound.ott.launcher"
+        minSdkVersion PROP_MIN_SDK_VERSION
+        targetSdkVersion PROP_TARGET_SDK_VERSION
+        versionCode 1
+        versionName "1.0"
+
+        externalNativeBuild {
+            ndkBuild {
+                if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
+                    // skip the NDK Build step if PROP_NDK_MODE is none
+                    targets 'cocos2djs'
+                    arguments 'NDK_TOOLCHAIN_VERSION=clang'
+
+                    def module_paths = [project.file("G:/CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x"),
+                                        project.file("G:/CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos"),
+                                        project.file("G:/CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external")]
+                    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
+                        arguments 'NDK_MODULE_PATH=' + module_paths.join(";")
+                    }
+                    else {
+                        arguments 'NDK_MODULE_PATH=' + module_paths.join(':')
+                    }
+
+                    arguments '-j' + Runtime.runtime.availableProcessors()
+                    abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String})
+                }
+            }
+        }
+    }
+
+    sourceSets.main {
+        java.srcDirs "../src", "src"
+        res.srcDirs "../res", 'res'
+        jniLibs.srcDirs "../libs", 'libs'
+        manifest.srcFile "AndroidManifest.xml"
+    }
+
+    externalNativeBuild {
+        ndkBuild {
+            if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
+                // skip the NDK Build step if PROP_NDK_MODE is none
+                path "jni/Android.mk"
+            }
+        }
+    }
+
+    signingConfigs {
+
+       release {
+            if (project.hasProperty("RELEASE_STORE_FILE")) {
+                storeFile file(RELEASE_STORE_FILE)
+                storePassword RELEASE_STORE_PASSWORD
+                keyAlias RELEASE_KEY_ALIAS
+                keyPassword RELEASE_KEY_PASSWORD
+            }
+        }
+    }
+
+    buildTypes {
+        release {
+            debuggable false
+            jniDebuggable false
+            renderscriptDebuggable false
+            minifyEnabled true
+            shrinkResources true
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+            if (project.hasProperty("RELEASE_STORE_FILE")) {
+                signingConfig signingConfigs.release
+            }
+
+            externalNativeBuild {
+                ndkBuild {
+                    arguments 'NDK_DEBUG=0'
+                }
+            }
+        }
+
+        debug {
+            debuggable true
+            jniDebuggable true
+            renderscriptDebuggable true
+            externalNativeBuild {
+                ndkBuild {
+                    arguments 'NDK_DEBUG=1'
+                }
+            }
+        }
+    }
+}
+
+android.applicationVariants.all { variant ->
+    // delete previous files first
+    delete "${buildDir}/intermediates/merged_assets/${variant.dirName}"
+
+    variant.mergeAssets.doLast {
+        def sourceDir = "${buildDir}/../../../../.."
+
+        copy {
+            from "${sourceDir}/assets"
+            into "${outputDir}/assets"
+        }
+
+        copy {
+            from "${sourceDir}/src"
+            into "${outputDir}/src"
+        }
+
+        copy {
+            from "${sourceDir}/jsb-adapter"
+            into "${outputDir}/jsb-adapter"
+        }
+
+        copy {
+            from "${sourceDir}/main.js"
+            from "${sourceDir}/project.json"
+            into outputDir
+        }
+    }
+}
+
+dependencies {
+    implementation fileTree(dir: '../libs', include: ['*.jar','*.aar'])
+    implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
+    implementation fileTree(dir: "G:/CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/java/libs", include: ['*.jar'])
+    implementation project(':libcocos2dx')
+
+}

+ 2 - 0
app/jni/Android.mk

@@ -0,0 +1,2 @@
+LOCAL_PATH := $(call my-dir)
+include $(LOCAL_PATH)/../../jni/CocosAndroid.mk

+ 2 - 0
app/jni/Application.mk

@@ -0,0 +1,2 @@
+LOCAL_PATH :=$(call my-dir)
+include $(LOCAL_PATH)/../../jni/CocosApplication.mk

+ 2 - 0
app/local.properties

@@ -0,0 +1,2 @@
+sdk.dir=G:\\AndroidStudio\\sdk
+ndk.dir=G:\\AndroidStudio\\sdk\\ndk-bundle

+ 44 - 0
app/proguard-rules.pro

@@ -0,0 +1,44 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in E:\developSoftware\Android\SDK/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# 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 *;
+#}
+
+# Proguard Cocos2d-x-lite for release
+-keep public class org.cocos2dx.** { *; }
+-dontwarn org.cocos2dx.**
+
+# Proguard Apache HTTP for release
+-keep class org.apache.http.** { *; }
+-dontwarn org.apache.http.**
+
+# Proguard okhttp for release
+-keep class okhttp3.** { *; }
+-dontwarn okhttp3.**
+
+-keep class okio.** { *; }
+-dontwarn okio.**
+
+# Proguard Android Webivew for release. you can comment if you are not using a webview
+-keep public class android.net.http.SslError
+-keep public class android.webkit.WebViewClient
+
+-dontwarn android.webkit.WebView
+-dontwarn android.net.http.SslError
+-dontwarn android.webkit.WebViewClient
+
+# keep anysdk for release. you can comment if you are not using anysdk
+-keep public class com.anysdk.** { *; }
+-dontwarn com.anysdk.**

+ 11 - 0
app/project.properties

@@ -0,0 +1,11 @@
+# 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 use,
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+
+# Project target.
+target=android-28

+ 8 - 0
build-cfg.json

@@ -0,0 +1,8 @@
+{
+    "ndk_module_path" :[
+        "G:/CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x",
+        "G:/CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos",
+        "G:/CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external"
+    ],
+    "copy_resources": []
+}

+ 30 - 0
build.gradle

@@ -0,0 +1,30 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+
+    repositories {
+        google()
+        jcenter()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:3.2.0'
+
+
+        // NOTE: Do not place your application dependencies here; they belong
+        // in the individual module build.gradle files
+    }
+}
+
+allprojects {
+    repositories {
+        google()
+        jcenter()
+        flatDir {
+            dirs 'libs'
+        }
+    }
+}
+
+task clean(type: Delete) {
+    delete rootProject.buildDir
+}

Різницю між файлами не показано, бо вона завелика
+ 3006 - 0
game/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build.json


Різницю між файлами не показано, бо вона завелика
+ 65 - 0
game/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/android_gradle_build_mini.json


+ 21 - 0
game/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_command.txt

@@ -0,0 +1,21 @@
+Executable : G:\AndroidStudio\sdk\ndk-bundle\ndk-build.cmd
+arguments : 
+NDK_PROJECT_PATH=null
+APP_BUILD_SCRIPT=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\game\jni\Android.mk
+NDK_APPLICATION_MK=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\game\jni\Application.mk
+APP_ABI=armeabi-v7a
+NDK_ALL_ABIS=armeabi-v7a
+NDK_DEBUG=1
+APP_PLATFORM=android-21
+NDK_OUT=G:/WorkSpace/efunbox-build/jsb-link/frameworks/runtime-src/proj.android-studio/game/build/intermediates/ndkBuild/debug/obj
+NDK_LIBS_OUT=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\game\build\intermediates\ndkBuild\debug\lib
+NDK_TOOLCHAIN_VERSION=clang
+NDK_MODULE_PATH=G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x;G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x\cocos;G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x\external
+-j8
+NDK_DEBUG=1
+APP_SHORT_COMMANDS=false
+LOCAL_SHORT_COMMANDS=false
+-B
+-n
+jvmArgs : 
+

Різницю між файлами не показано, бо вона завелика
+ 816 - 0
game/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_output.txt


Різницю між файлами не показано, бо вона завелика
+ 3006 - 0
game/.externalNativeBuild/ndkBuild/debugFeature/armeabi-v7a/android_gradle_build.json


Різницю між файлами не показано, бо вона завелика
+ 65 - 0
game/.externalNativeBuild/ndkBuild/debugFeature/armeabi-v7a/android_gradle_build_mini.json


+ 21 - 0
game/.externalNativeBuild/ndkBuild/debugFeature/armeabi-v7a/ndkBuild_build_command.txt

@@ -0,0 +1,21 @@
+Executable : G:\AndroidStudio\sdk\ndk-bundle\ndk-build.cmd
+arguments : 
+NDK_PROJECT_PATH=null
+APP_BUILD_SCRIPT=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\game\jni\Android.mk
+NDK_APPLICATION_MK=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\game\jni\Application.mk
+APP_ABI=armeabi-v7a
+NDK_ALL_ABIS=armeabi-v7a
+NDK_DEBUG=1
+APP_PLATFORM=android-21
+NDK_OUT=G:/WorkSpace/efunbox-build/jsb-link/frameworks/runtime-src/proj.android-studio/game/build/intermediates/ndkBuild/feature/debug/obj
+NDK_LIBS_OUT=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\game\build\intermediates\ndkBuild\feature\debug\lib
+NDK_TOOLCHAIN_VERSION=clang
+NDK_MODULE_PATH=G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x;G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x\cocos;G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x\external
+-j8
+NDK_DEBUG=1
+APP_SHORT_COMMANDS=false
+LOCAL_SHORT_COMMANDS=false
+-B
+-n
+jvmArgs : 
+

Різницю між файлами не показано, бо вона завелика
+ 816 - 0
game/.externalNativeBuild/ndkBuild/debugFeature/armeabi-v7a/ndkBuild_build_output.txt


Різницю між файлами не показано, бо вона завелика
+ 3006 - 0
game/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build.json


Різницю між файлами не показано, бо вона завелика
+ 65 - 0
game/.externalNativeBuild/ndkBuild/release/armeabi-v7a/android_gradle_build_mini.json


+ 21 - 0
game/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_command.txt

@@ -0,0 +1,21 @@
+Executable : G:\AndroidStudio\sdk\ndk-bundle\ndk-build.cmd
+arguments : 
+NDK_PROJECT_PATH=null
+APP_BUILD_SCRIPT=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\game\jni\Android.mk
+NDK_APPLICATION_MK=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\game\jni\Application.mk
+APP_ABI=armeabi-v7a
+NDK_ALL_ABIS=armeabi-v7a
+NDK_DEBUG=0
+APP_PLATFORM=android-21
+NDK_OUT=G:/WorkSpace/efunbox-build/jsb-link/frameworks/runtime-src/proj.android-studio/game/build/intermediates/ndkBuild/release/obj
+NDK_LIBS_OUT=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\game\build\intermediates\ndkBuild\release\lib
+NDK_TOOLCHAIN_VERSION=clang
+NDK_MODULE_PATH=G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x;G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x\cocos;G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x\external
+-j8
+NDK_DEBUG=0
+APP_SHORT_COMMANDS=false
+LOCAL_SHORT_COMMANDS=false
+-B
+-n
+jvmArgs : 
+

Різницю між файлами не показано, бо вона завелика
+ 811 - 0
game/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_output.txt


Різницю між файлами не показано, бо вона завелика
+ 3006 - 0
game/.externalNativeBuild/ndkBuild/releaseFeature/armeabi-v7a/android_gradle_build.json


Різницю між файлами не показано, бо вона завелика
+ 65 - 0
game/.externalNativeBuild/ndkBuild/releaseFeature/armeabi-v7a/android_gradle_build_mini.json


+ 21 - 0
game/.externalNativeBuild/ndkBuild/releaseFeature/armeabi-v7a/ndkBuild_build_command.txt

@@ -0,0 +1,21 @@
+Executable : G:\AndroidStudio\sdk\ndk-bundle\ndk-build.cmd
+arguments : 
+NDK_PROJECT_PATH=null
+APP_BUILD_SCRIPT=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\game\jni\Android.mk
+NDK_APPLICATION_MK=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\game\jni\Application.mk
+APP_ABI=armeabi-v7a
+NDK_ALL_ABIS=armeabi-v7a
+NDK_DEBUG=0
+APP_PLATFORM=android-21
+NDK_OUT=G:/WorkSpace/efunbox-build/jsb-link/frameworks/runtime-src/proj.android-studio/game/build/intermediates/ndkBuild/feature/release/obj
+NDK_LIBS_OUT=G:\WorkSpace\efunbox-build\jsb-link\frameworks\runtime-src\proj.android-studio\game\build\intermediates\ndkBuild\feature\release\lib
+NDK_TOOLCHAIN_VERSION=clang
+NDK_MODULE_PATH=G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x;G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x\cocos;G:\CocosCreator\cocoscreator_ide\CocosCreator_v2.4.0_20200622_win\resources\cocos2d-x\external
+-j8
+NDK_DEBUG=0
+APP_SHORT_COMMANDS=false
+LOCAL_SHORT_COMMANDS=false
+-B
+-n
+jvmArgs : 
+

Різницю між файлами не показано, бо вона завелика
+ 811 - 0
game/.externalNativeBuild/ndkBuild/releaseFeature/armeabi-v7a/ndkBuild_build_output.txt


+ 1 - 0
game/.gitignore

@@ -0,0 +1 @@
+/build

+ 55 - 0
game/AndroidManifest.xml

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:dist="http://schemas.android.com/apk/distribution"
+    xmlns:tools="http://schemas.android.com/tools"
+    package="org.cocos2dx.javascript">
+    <dist:module dist:instant="true" />
+    <application
+        android:allowBackup="true"
+        android:icon="@mipmap/ic_launcher"
+        android:label="@string/app_name"
+        android:roundIcon="@mipmap/ic_launcher"
+        android:usesCleartextTraffic="true"
+        android:supportsRtl="true">
+        <meta-data
+            android:name="aia-compat-api-min-version"
+            android:value="1" />
+
+        <meta-data android:name="android.app.lib_name"
+            android:value="cocos2djs" />
+
+        <activity
+            android:name="org.cocos2dx.javascript.AppActivity"
+            android:screenOrientation="sensorLandscape"
+            android:configChanges="orientation|keyboardHidden|screenSize|screenLayout"
+            android:label="@string/app_name"
+            android:launchMode="singleTask"
+            android:taskAffinity=""
+            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
+
+            <intent-filter android:order="1">
+                <action android:name="android.intent.action.VIEW" />
+
+                <category android:name="android.intent.category.BROWSABLE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+    <uses-feature android:glEsVersion="0x00020000" />
+    <uses-permission android:name="android.permission.INTERNET"/>
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
+    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+    <uses-permission android:name="android.permission.RESTART_PACKAGES" />
+    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
+        tools:ignore="ProtectedPermissions" />
+    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
+</manifest>

+ 136 - 0
game/build.gradle

@@ -0,0 +1,136 @@
+import org.apache.tools.ant.taskdefs.condition.Os
+apply plugin: 'com.android.feature'
+android {
+    baseFeature true
+    compileSdkVersion PROP_COMPILE_SDK_VERSION.toInteger()
+    buildToolsVersion PROP_BUILD_TOOLS_VERSION
+
+    defaultConfig {
+        minSdkVersion PROP_MIN_SDK_VERSION
+        targetSdkVersion PROP_TARGET_SDK_VERSION
+        versionCode 1
+        versionName "1.0"
+
+        externalNativeBuild {
+            ndkBuild {
+                if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
+                    // skip the NDK Build step if PROP_NDK_MODE is none
+                    targets 'cocos2djs'
+                    arguments 'NDK_TOOLCHAIN_VERSION=clang'
+
+                    def module_paths = [project.file("G:/CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x"),
+                                        project.file("G:/CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos"),
+                                        project.file("G:/CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/external")]
+                    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
+                        arguments 'NDK_MODULE_PATH=' + module_paths.join(";")
+                    }
+                    else {
+                        arguments 'NDK_MODULE_PATH=' + module_paths.join(':')
+                    }
+
+                    arguments '-j' + Runtime.runtime.availableProcessors()
+                    abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String})
+                }
+            }
+        }
+    }
+
+    sourceSets.main {
+        java.srcDirs "../src", "src"
+        res.srcDirs "../res", 'res'
+        jniLibs.srcDirs "../libs", 'libs'
+        manifest.srcFile "AndroidManifest.xml"
+    }
+
+    externalNativeBuild {
+        ndkBuild {
+            if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
+                // skip the NDK Build step if PROP_NDK_MODE is none
+                path "jni/Android.mk"
+            }
+        }
+    }
+
+    signingConfigs {
+
+        release {
+            if (project.hasProperty("RELEASE_STORE_FILE")) {
+                storeFile file(RELEASE_STORE_FILE)
+                storePassword RELEASE_STORE_PASSWORD
+                keyAlias RELEASE_KEY_ALIAS
+                keyPassword RELEASE_KEY_PASSWORD
+            }
+        }
+    }
+
+    buildTypes {
+        release {
+            debuggable false
+            jniDebuggable false
+            renderscriptDebuggable false
+            minifyEnabled true
+            shrinkResources true
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+            if (project.hasProperty("RELEASE_STORE_FILE")) {
+                signingConfig signingConfigs.release
+            }
+
+            externalNativeBuild {
+                ndkBuild {
+                    arguments 'NDK_DEBUG=0'
+                }
+            }
+        }
+
+        debug {
+            debuggable true
+            jniDebuggable true
+            renderscriptDebuggable true
+            externalNativeBuild {
+                ndkBuild {
+                    arguments 'NDK_DEBUG=1'
+                }
+            }
+        }
+    }
+
+}
+
+android.featureVariants.all { variant ->
+    // delete previous files first
+    delete "${buildDir}/intermediates/merged_assets/"
+
+    variant.mergeAssets.doLast {
+        def sourceDir = "${buildDir}/../../../../.."
+
+        copy {
+            from "${sourceDir}/assets"
+            into "${outputDir}/assets"
+        }
+
+        copy {
+            from "${sourceDir}/src"
+            into "${outputDir}/src"
+        }
+
+        copy {
+            from "${sourceDir}/jsb-adapter"
+            into "${outputDir}/jsb-adapter"
+        }
+
+        copy {
+            from "${sourceDir}/main.js"
+            from "${sourceDir}/project.json"
+            into outputDir
+        }
+    }
+}
+
+dependencies {
+    implementation fileTree(dir: '../libs', include: ['*.jar','*.aar'])
+    implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
+    implementation fileTree(dir: "G:/CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/java/libs", include: ['*.jar'])
+    implementation 'com.google.android.instantapps:instantapps:1.1.0'
+    implementation 'com.google.android.gms:play-services-instantapps:16.0.0'
+    implementation project(':libcocos2dx')
+}

+ 2 - 0
game/jni/Android.mk

@@ -0,0 +1,2 @@
+LOCAL_PATH :=$(call my-dir)
+include $(LOCAL_PATH)/../../jni/CocosAndroid.mk

+ 5 - 0
game/jni/Application.mk

@@ -0,0 +1,5 @@
+LOCAL_PATH := $(call my-dir)
+include $(LOCAL_PATH)/../../jni/CocosApplication.mk
+
+# Android instant apps flag
+APP_CFLAGS += -DANDROID_INSTANT=1

+ 45 - 0
game/proguard-rules.pro

@@ -0,0 +1,45 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in E:\developSoftware\Android\SDK/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# 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 *;
+#}
+
+# Proguard Cocos2d-x-lite for release
+-keep public class org.cocos2dx.** { *; }
+-dontwarn org.cocos2dx.**
+
+# Proguard Apache HTTP for release
+-keep class org.apache.http.** { *; }
+-dontwarn org.apache.http.**
+
+# Proguard okhttp for release
+-keep class okhttp3.** { *; }
+-dontwarn okhttp3.**
+
+-keep class okio.** { *; }
+-dontwarn okio.**
+
+
+# Proguard Android Webivew for release. you can comment if you are not using a webview
+-keep public class android.net.http.SslError
+-keep public class android.webkit.WebViewClient
+
+-dontwarn android.webkit.WebView
+-dontwarn android.net.http.SslError
+-dontwarn android.webkit.WebViewClient
+
+# keep anysdk for release. you can comment if you are not using anysdk
+-keep public class com.anysdk.** { *; }
+-dontwarn com.anysdk.**

+ 115 - 0
game/src/org/cocos2dx/javascript/InstantHelper.java

@@ -0,0 +1,115 @@
+/****************************************************************************
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos.com
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated engine source code (the "Software"), a limited,
+ worldwide, royalty-free, non-assignable, revocable and non-exclusive license
+ to use Cocos Creator solely to develop games on your target platforms. You shall
+ not use Cocos Creator software for developing other software or tools that's
+ used for developing games. You are not granted to publish, distribute,
+ sublicense, and/or sell copies of Cocos Creator.
+
+ The software or tools in this License Agreement are licensed, not sold.
+ Xiamen Yaji Software Co., Ltd. reserves all rights not expressly granted to you.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+
+package org.cocos2dx.javascript;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.util.Log;
+
+import com.google.android.gms.instantapps.InstantApps;
+import com.google.android.gms.instantapps.PackageManagerCompat;
+
+public class InstantHelper {
+    private static final String TAG = "InstantHelper";
+    private Context mCtx = null;
+    private static InstantHelper mHelper = null;
+
+    public static InstantHelper getInstance() {
+        if (null == mHelper) {
+            mHelper = new InstantHelper();
+            mHelper.init(SDKWrapper.getInstance().getContext());
+        }
+        return mHelper;
+    }
+
+    public void init(Context ctx) {
+        this.mCtx = ctx;
+    }
+
+    private void _showInstallPrompt() {
+        Activity act = ((Activity) mCtx);
+        Uri a = act.getIntent().getData();
+        Intent postInstallIntent = new Intent(Intent.ACTION_VIEW, a);
+        postInstallIntent.addCategory(Intent.CATEGORY_BROWSABLE);
+        com.google.android.instantapps.InstantApps.showInstallPrompt(act, postInstallIntent, 0, "AppActivity");
+    }
+
+    private boolean _isInstantApp() {
+        PackageManagerCompat compact = InstantApps.getPackageManagerCompat(mCtx);
+        return compact.isInstantApp();
+    }
+
+    private boolean _setInstantAppCookie(String ck) {
+        PackageManagerCompat compact = InstantApps.getPackageManagerCompat(mCtx);
+        if (null == ck || "null".equals(ck)) {
+            return compact.setInstantAppCookie(null);
+        }
+        return compact.setInstantAppCookie(ck.getBytes());
+    }
+
+    private String _getInstantAppCookie() {
+        String result;
+        PackageManagerCompat compact = InstantApps.getPackageManagerCompat(mCtx);
+        byte[] bt = compact.getInstantAppCookie();
+        if (bt != null) {
+            result = new String(bt);
+        } else {
+            result = "null";
+        }
+        return result;
+    }
+
+    private int _getInstantAppCookieMaxSize() {
+        PackageManagerCompat compact = InstantApps.getPackageManagerCompat(mCtx);
+        return compact.getInstantAppCookieMaxSize();
+    }
+
+    public static boolean isInstantApp() {
+        return InstantHelper.getInstance()._isInstantApp();
+    }
+
+    public static String getInstantAppCookie() {
+        return InstantHelper.getInstance()._getInstantAppCookie();
+    }
+
+    public static boolean setInstantAppCookie(final String ck) {
+        return InstantHelper.getInstance()._setInstantAppCookie(ck);
+    }
+
+    public static boolean clearInstantAppCookie() {
+        return InstantHelper.getInstance()._setInstantAppCookie(null);
+    }
+
+    public static int getInstantAppCookieMaxSize() {
+        return InstantHelper.getInstance()._getInstantAppCookieMaxSize();
+    }
+
+    public static void showInstallPrompt() {
+        InstantHelper.getInstance()._showInstallPrompt();
+    }
+}

+ 46 - 0
gradle.properties

@@ -0,0 +1,46 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+
+# Android SDK version that will be used as the compile project
+PROP_COMPILE_SDK_VERSION=31
+
+# Android SDK version that will be used as the earliest version of android this application can run on
+PROP_MIN_SDK_VERSION=21
+
+# Android SDK version that will be used as the latest version of android this application has been tested on
+PROP_TARGET_SDK_VERSION=31
+
+# Android Build Tools version that will be used as the compile project
+PROP_BUILD_TOOLS_VERSION=28.0.3
+
+# List of CPU Archtexture to build that application with
+# Available architextures (armeabi-v7a | arm64-v8a | x86)
+# To build for multiple architexture, use the `:` between them
+# Example - PROP_APP_ABI=armeabi-v7a
+PROP_APP_ABI=armeabi-v7a
+
+# fill in sign information for release mode
+RELEASE_STORE_FILE=G:/CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/static/build-templates/native/debug.keystore
+RELEASE_STORE_PASSWORD=123456
+RELEASE_KEY_ALIAS=debug_keystore
+RELEASE_KEY_PASSWORD=123456
+
+android.injected.testOnly=false
+android.useAndroidX = true
+android.enableJetifier = false

BIN
gradle/wrapper/gradle-wrapper.jar


+ 6 - 0
gradle/wrapper/gradle-wrapper.properties

@@ -0,0 +1,6 @@
+#Fri Oct 27 10:18:28 CST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip

+ 164 - 0
gradlew

@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

+ 90 - 0
gradlew.bat

@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem  Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega

+ 1 - 0
instantapp/.gitignore

@@ -0,0 +1 @@
+/build

+ 5 - 0
instantapp/build.gradle

@@ -0,0 +1,5 @@
+apply plugin: 'com.android.instantapp'
+
+dependencies {
+    implementation project(':game')
+}

+ 23 - 0
jni/CocosAndroid.mk

@@ -0,0 +1,23 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := cocos2djs_shared
+
+LOCAL_MODULE_FILENAME := libcocos2djs
+
+ifeq ($(USE_ARM_MODE),1)
+LOCAL_ARM_MODE := arm
+endif
+
+LOCAL_SRC_FILES := hellojavascript/main.cpp \
+				   ../../Classes/AppDelegate.cpp \
+				   ../../Classes/jsb_module_register.cpp \
+
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
+
+LOCAL_STATIC_LIBRARIES := cocos2dx_static
+
+include $(BUILD_SHARED_LIBRARY)
+
+$(call import-module, cocos)

+ 50 - 0
jni/CocosApplication.mk

@@ -0,0 +1,50 @@
+APP_STL := c++_static
+
+# Uncomment this line to compile to armeabi-v7a, your application will run faster but support less devices
+APP_ABI := armeabi-v7a
+
+APP_CPPFLAGS := -frtti -std=c++11 -fsigned-char
+APP_LDFLAGS := -latomic
+
+# To solve windows commands char length too long
+APP_SHORT_COMMANDS := true
+
+USE_ARM_MODE := 1
+
+# MUST be careful to modify this manually
+# disable module will speed up compile time, and reduce package size
+USE_GFX_RENDERER := 1
+USE_VIDEO := 1
+USE_WEB_VIEW := 1
+USE_AUDIO := 1
+USE_SOCKET := 1
+USE_SPINE := 1
+USE_DRAGONBONES := 1
+USE_TIFF := 1
+USE_MIDDLEWARE := 1
+USE_PARTICLE := 1
+
+APP_CPPFLAGS += -DUSE_GFX_RENDERER=$(USE_GFX_RENDERER)
+APP_CPPFLAGS += -DUSE_VIDEO=${USE_VIDEO}
+APP_CPPFLAGS += -DUSE_WEB_VIEW=${USE_WEB_VIEW}
+APP_CPPFLAGS += -DUSE_AUDIO=${USE_AUDIO}
+APP_CPPFLAGS += -DUSE_SOCKET=${USE_SOCKET}
+APP_CPPFLAGS += -DUSE_SPINE=${USE_SPINE}
+APP_CPPFLAGS += -DUSE_DRAGONBONES=${USE_DRAGONBONES}
+APP_CPPFLAGS += -DCC_USE_TIFF=${USE_TIFF}
+APP_CPPFLAGS += -DUSE_MIDDLEWARE=${USE_MIDDLEWARE}
+APP_CPPFLAGS += -DUSE_PARTICLE=${USE_PARTICLE}
+
+ifeq ($(NDK_DEBUG),1)
+  APP_CPPFLAGS += -DCOCOS2D_DEBUG=1
+  APP_CFLAGS += -DCOCOS2D_DEBUG=1
+  APP_OPTIM := debug
+else
+  APP_CPPFLAGS += -DNDEBUG
+  APP_CFLAGS += -DNDEBUG
+  APP_OPTIM := release
+endif
+
+# Some Android Simulators don't support SSE instruction, so disable it for x86 arch.
+APP_CPPFLAGS += -U__SSE__
+USE_EDIT_BOX := 1

+ 53 - 0
jni/hellojavascript/main.cpp

@@ -0,0 +1,53 @@
+/****************************************************************************
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos.com
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated engine source code (the "Software"), a limited,
+ worldwide, royalty-free, non-assignable, revocable and non-exclusive license
+ to use Cocos Creator solely to develop games on your target platforms. You shall
+ not use Cocos Creator software for developing other software or tools that's
+ used for developing games. You are not granted to publish, distribute,
+ sublicense, and/or sell copies of Cocos Creator.
+
+ The software or tools in this License Agreement are licensed, not sold.
+ Xiamen Yaji Software Co., Ltd. reserves all rights not expressly granted to you.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+
+#include "AppDelegate.h"
+#include "cocos2d.h"
+#include "platform/android/jni/JniHelper.h"
+#include <jni.h>
+#include <android/log.h>
+
+#define LOG_TAG "main"
+#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
+using namespace cocos2d;
+
+//called when JNI_OnLoad()
+void cocos_jni_env_init(JNIEnv *env)
+{
+    LOGD("cocos_jni_env_init");
+}
+
+//called when onSurfaceCreated()
+Application *cocos_android_app_init(JNIEnv *env, int width, int height)
+{
+    LOGD("cocos_android_app_init");
+    auto app = new AppDelegate(width, height);
+    return app;
+}
+
+extern "C"
+{
+    /*JNI_CALL_FUNCTION*/
+}

BIN
res/mipmap-hdpi/ic_launcher.png


BIN
res/mipmap-mdpi/ic_launcher.png


BIN
res/mipmap-xhdpi/ic_launcher.png


BIN
res/mipmap-xxhdpi/ic_launcher.png


+ 3 - 0
res/values/strings.xml

@@ -0,0 +1,3 @@
+<resources>
+    <string name="app_name" translatable="false">efunbox-ott-launcher</string>
+</resources>

+ 4 - 0
settings.gradle

@@ -0,0 +1,4 @@
+include ':libcocos2dx',':game', ':instantapp'
+project(':libcocos2dx').projectDir = new File('G:/CocosCreator/cocoscreator_ide/CocosCreator_v2.4.0_20200622_win/resources/cocos2d-x/cocos/platform/android/libcocos2dx')
+include ':efunbox-ott-launcher'
+project(':efunbox-ott-launcher').projectDir = new File(settingsDir, 'app')

+ 152 - 0
src/org/cocos2dx/javascript/AppActivity.java

@@ -0,0 +1,152 @@
+/****************************************************************************
+ Copyright (c) 2015-2016 Chukong Technologies Inc.
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos2d-x.org
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+package org.cocos2dx.javascript;
+
+import org.cocos2dx.javascript.presenter.MainPresenter;
+import org.cocos2dx.javascript.util.Logger;
+import org.cocos2dx.lib.Cocos2dxActivity;
+import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
+
+import android.graphics.PixelFormat;
+import android.os.Bundle;
+
+import android.content.Intent;
+import android.content.res.Configuration;
+
+public class AppActivity extends Cocos2dxActivity {
+
+    MainPresenter mPresenter;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // Workaround in
+        // https://stackoverflow.com/questions/16283079/re-launch-of-activity-on-home-button-but-only-the-first-time/16447508
+        if (!isTaskRoot()) {
+            // Android launched another instance of the root activity into an existing task
+            // so just quietly finish and go away, dropping the user back into the activity
+            // at the top of the stack (ie: the last state of this task)
+            // Don't need to finish it again since it's finished in super.onCreate .
+            return;
+        }
+        // DO OTHER INITIALIZATION BELOW
+        SDKWrapper.getInstance().init(this);
+        mPresenter = new MainPresenter(this);
+
+    }
+
+    @Override
+    public Cocos2dxGLSurfaceView onCreateView() {
+        Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
+        // TestCpp should create stencil buffer
+//        glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
+        glSurfaceView.setZOrderMediaOverlay(true);
+        glSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
+        glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 8);
+        SDKWrapper.getInstance().setGLSurfaceView(glSurfaceView, this);
+        return glSurfaceView;
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        SDKWrapper.getInstance().onResume();
+
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        SDKWrapper.getInstance().onPause();
+
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+
+        // Workaround in https://stackoverflow.com/questions/16283079/re-launch-of-activity-on-home-button-but-only-the-first-time/16447508
+        if (!isTaskRoot()) {
+            return;
+        }
+
+        SDKWrapper.getInstance().onDestroy();
+
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        SDKWrapper.getInstance().onActivityResult(requestCode, resultCode, data);
+    }
+
+    @Override
+    protected void onNewIntent(Intent intent) {
+        super.onNewIntent(intent);
+        SDKWrapper.getInstance().onNewIntent(intent);
+    }
+
+    @Override
+    protected void onRestart() {
+        super.onRestart();
+        SDKWrapper.getInstance().onRestart();
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        SDKWrapper.getInstance().onStop();
+    }
+
+    @Override
+    public void onBackPressed() {
+        SDKWrapper.getInstance().onBackPressed();
+        super.onBackPressed();
+    }
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        SDKWrapper.getInstance().onConfigurationChanged(newConfig);
+        super.onConfigurationChanged(newConfig);
+    }
+
+    @Override
+    protected void onRestoreInstanceState(Bundle savedInstanceState) {
+        SDKWrapper.getInstance().onRestoreInstanceState(savedInstanceState);
+        super.onRestoreInstanceState(savedInstanceState);
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        SDKWrapper.getInstance().onSaveInstanceState(outState);
+        super.onSaveInstanceState(outState);
+    }
+
+    @Override
+    protected void onStart() {
+        SDKWrapper.getInstance().onStart();
+        super.onStart();
+    }
+}

+ 179 - 0
src/org/cocos2dx/javascript/SDKWrapper.java

@@ -0,0 +1,179 @@
+/****************************************************************************
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos.com
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated engine source code (the "Software"), a limited,
+ worldwide, royalty-free, non-assignable, revocable and non-exclusive license
+ to use Cocos Creator solely to develop games on your target platforms. You shall
+ not use Cocos Creator software for developing other software or tools that's
+ used for developing games. You are not granted to publish, distribute,
+ sublicense, and/or sell copies of Cocos Creator.
+
+ The software or tools in this License Agreement are licensed, not sold.
+ Xiamen Yaji Software Co., Ltd. reserves all rights not expressly granted to you.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+
+package org.cocos2dx.javascript;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.AssetManager;
+import android.content.res.Configuration;
+import android.opengl.GLSurfaceView;
+import android.os.Bundle;
+import org.cocos2dx.javascript.service.SDKClass;
+import org.json.*;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+public class SDKWrapper {
+    private Context mainActive = null;
+    private static SDKWrapper mInstace = null;
+    private List<SDKClass> sdkClasses;
+
+    public static SDKWrapper getInstance() {
+        if (null == mInstace) {
+            mInstace = new SDKWrapper();
+        }
+        return mInstace;
+    }
+
+    public void init(Context context) {
+        this.mainActive = context;
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.init(context);
+        }
+    }
+
+    public Context getContext() {
+        return this.mainActive;
+    }
+
+    public void loadSDKClass() {
+        ArrayList<SDKClass> classes = new ArrayList<SDKClass>();
+        try {
+            String json = this.getJson(this.mainActive, "project.json");
+            JSONObject jsonObject = new JSONObject(json);
+            JSONArray serviceClassPath = jsonObject.getJSONArray("serviceClassPath");
+            if (serviceClassPath == null) return;
+            int length = serviceClassPath.length();
+            for (int i = 0; i < length; i++) {
+                String classPath = serviceClassPath.getString(i);
+                SDKClass sdk = (SDKClass) Class.forName(classPath).newInstance();
+                classes.add(sdk);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        this.sdkClasses = classes;
+    }
+
+    private String getJson(Context mContext, String fileName) {
+        StringBuilder sb = new StringBuilder();
+        AssetManager am = mContext.getAssets();
+        try {
+            BufferedReader br = new BufferedReader(new InputStreamReader(am.open(fileName)));
+            String next = "";
+            while (null != (next = br.readLine())) {
+                sb.append(next);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            sb.delete(0, sb.length());
+        }
+        return sb.toString().trim();
+    }
+
+    public void setGLSurfaceView(GLSurfaceView view, Context context) {
+        this.mainActive = context;
+        this.loadSDKClass();
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.setGLSurfaceView(view);
+        }
+    }
+
+    public void onResume() {
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.onResume();
+        }
+    }
+
+    public void onPause() {
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.onPause();
+        }
+    }
+
+    public void onDestroy() {
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.onDestroy();
+        }
+    }
+
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.onActivityResult(requestCode, resultCode, data);
+        }
+    }
+
+    public void onNewIntent(Intent intent) {
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.onNewIntent(intent);
+        }
+    }
+
+    public void onRestart() {
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.onRestart();
+        }
+    }
+
+    public void onStop() {
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.onStop();
+        }
+    }
+
+    public void onBackPressed() {
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.onBackPressed();
+        }
+    }
+
+    public void onConfigurationChanged(Configuration newConfig) {
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.onConfigurationChanged(newConfig);
+        }
+    }
+
+    public void onRestoreInstanceState(Bundle savedInstanceState) {
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.onRestoreInstanceState(savedInstanceState);
+        }
+    }
+
+    public void onSaveInstanceState(Bundle outState) {
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.onSaveInstanceState(outState);
+        }
+    }
+
+    public void onStart() {
+        for (SDKClass sdk : this.sdkClasses) {
+            sdk.onStart();
+        }
+    }
+}

+ 23 - 0
src/org/cocos2dx/javascript/application/EApplication.java

@@ -0,0 +1,23 @@
+package org.cocos2dx.javascript.application;
+
+import android.app.Application;
+import android.content.Context;
+
+
+import org.cocos2dx.javascript.util.Consts;
+import org.cocos2dx.lib.MediaPlayerManager;
+
+
+public class EApplication extends Application {
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        Consts.mApplicatonContext = getApplicationContext();
+//        MediaPlayerManager.getDefault().init(Consts.mApplicatonContext, getPackageName());
+    }
+
+    @Override
+    protected void attachBaseContext(Context base) {
+        super.attachBaseContext(base);
+    }
+}

+ 14 - 0
src/org/cocos2dx/javascript/bean/AppInfo.java

@@ -0,0 +1,14 @@
+package org.cocos2dx.javascript.bean;
+
+import android.graphics.drawable.Drawable;
+import android.util.Base64;
+
+public class AppInfo {
+    public String appName = "";
+    public String packageName = "";
+    public String versionName = "";
+    public int versionCode = 0;
+    public String appIcon = null;
+    //0是系统,1是第三方
+    public int isSystemApp;
+}

+ 59 - 0
src/org/cocos2dx/javascript/presenter/MainPresenter.java

@@ -0,0 +1,59 @@
+package org.cocos2dx.javascript.presenter;
+
+import android.view.View;
+import android.widget.Toast;
+
+import com.google.gson.Gson;
+
+import org.cocos2dx.javascript.AppActivity;
+import org.cocos2dx.javascript.util.DeviceUtil;
+import org.cocos2dx.javascript.util.PackageUtil;
+
+public class MainPresenter {
+    private static AppActivity mActivity;
+    private static DeviceUtil mDeviceUtil;
+    private static PackageUtil mPackageUtil;
+    private static Gson mGson;
+
+    public MainPresenter(AppActivity activity) {
+        mActivity = activity;
+        mGson = new Gson();
+        mDeviceUtil = new DeviceUtil();
+        mPackageUtil = new PackageUtil(activity);
+    }
+
+    public static String getVersionCode() {
+        return mDeviceUtil.getVersionCode(mActivity);
+    }
+
+    public static void showToast(final String message) {
+        mActivity.runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                Toast.makeText(mActivity, message, Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+
+    public static String getSystemAppsJson() {
+        return mGson.toJson(mPackageUtil.getSystemAppList()).toString();
+    }
+
+    public static String getOtherAppsJson() {
+        return mGson.toJson(mPackageUtil.getOtherAppList()).toString();
+    }
+
+    public static void hideGameScene() {
+        mActivity.runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+//                mActivity.getGLSurfaceView().setVisibility(View.GONE);
+                mActivity.getGLSurfaceView().setZOrderOnTop(true);
+//                mActivity.getGLSurfaceView().setBackgroundColor(Color.TRANSPARENT);
+            }
+        });
+
+    }
+
+
+}

+ 40 - 0
src/org/cocos2dx/javascript/service/SDKClass.java

@@ -0,0 +1,40 @@
+package org.cocos2dx.javascript.service;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Configuration;
+import android.opengl.GLSurfaceView;
+import android.os.Bundle;
+
+public abstract class SDKClass implements SDKInterface {
+    private Context mainActive = null;
+    public Context getContext(){ return mainActive;}
+    @Override
+    public void init(Context context){ this.mainActive = context; }
+    @Override
+    public void setGLSurfaceView(GLSurfaceView view){}
+    @Override
+    public void onResume(){}
+    @Override
+    public void onPause(){}
+    @Override
+    public void onDestroy(){}
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data){}
+    @Override
+    public void onNewIntent(Intent intent){}
+    @Override
+    public void onRestart(){}
+    @Override
+    public void onStop(){}
+    @Override
+    public void onBackPressed(){}
+    @Override
+    public void onConfigurationChanged(Configuration newConfig){}
+    @Override
+    public void onRestoreInstanceState(Bundle savedInstanceState){}
+    @Override
+    public void onSaveInstanceState(Bundle outState){}
+    @Override
+    public void onStart(){}
+}

+ 24 - 0
src/org/cocos2dx/javascript/service/SDKInterface.java

@@ -0,0 +1,24 @@
+package org.cocos2dx.javascript.service;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Configuration;
+import android.opengl.GLSurfaceView;
+import android.os.Bundle;
+
+public interface SDKInterface {
+    void init(Context context);
+    void setGLSurfaceView(GLSurfaceView view);
+    void onResume();
+    void onPause();
+    void onDestroy();
+    void onActivityResult(int requestCode, int resultCode, Intent data);
+    void onNewIntent(Intent intent);
+    void onRestart();
+    void onStop();
+    void onBackPressed();
+    void onConfigurationChanged(Configuration newConfig);
+    void onRestoreInstanceState(Bundle savedInstanceState);
+    void onSaveInstanceState(Bundle outState);
+    void onStart();
+}

+ 7 - 0
src/org/cocos2dx/javascript/util/Consts.java

@@ -0,0 +1,7 @@
+package org.cocos2dx.javascript.util;
+
+import android.content.Context;
+
+public class Consts {
+    public static Context mApplicatonContext;
+}

+ 172 - 0
src/org/cocos2dx/javascript/util/DeviceUtil.java

@@ -0,0 +1,172 @@
+package org.cocos2dx.javascript.util;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.telephony.TelephonyManager;
+import android.util.DisplayMetrics;
+
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.util.Locale;
+
+public class DeviceUtil {
+
+
+    DisplayMetrics metric = new DisplayMetrics();
+
+    /**
+     * @return 序列号 SerialNumber
+     * @author zhangmengjie
+     */
+    public String SerialNumber() {
+
+        return android.os.Build.SERIAL;
+    }
+
+
+    public int getWidth(Activity context) {
+        context.getWindowManager().getDefaultDisplay().getMetrics(metric);
+        return metric.widthPixels; // 屏幕宽度(像素)
+    }
+
+    public int getHeight(Activity context) {
+        context.getWindowManager().getDefaultDisplay().getMetrics(metric);
+        return metric.heightPixels; // 屏幕高度(像素)
+    }
+
+    public float getDensity(Activity context) {
+        context.getWindowManager().getDefaultDisplay().getMetrics(metric);
+        return metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
+    }
+
+    public int getDensityDpi(Activity context) {
+        context.getWindowManager().getDefaultDisplay().getMetrics(metric);
+        return metric.densityDpi; // // 屏幕密度DPI(120 / 160 / 240)
+    }
+
+    // md5加密
+    public String md5Encode(String inStr) {
+        MessageDigest md5 = null;
+        try {
+            md5 = MessageDigest.getInstance("MD5");
+        } catch (Exception e) {
+            System.out.println(e.toString());
+            e.printStackTrace();
+            return "";
+        }
+
+        byte[] byteArray = null;
+        try {
+            byteArray = inStr.getBytes("UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        byte[] md5Bytes = md5.digest(byteArray);
+        StringBuffer hexValue = new StringBuffer();
+        for (int i = 0; i < md5Bytes.length; i++) {
+            int val = ((int) md5Bytes[i]) & 0xff;
+            if (val < 16) {
+                hexValue.append("0");
+            }
+            hexValue.append(Integer.toHexString(val));
+        }
+        return hexValue.toString();
+    }
+
+    /**
+     * @return VersionCode
+     * @author zhangmengjie
+     */
+    public String getVersionCode(Context context) {
+        PackageManager packageManager = context.getPackageManager();
+        PackageInfo packageInfo;
+        String versionCode = "";
+        try {
+            packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
+            versionCode = packageInfo.versionCode + "";
+        } catch (PackageManager.NameNotFoundException e) {
+            e.printStackTrace();
+        }
+        return versionCode;
+    }
+
+    /**
+     * @return VersionName
+     * @author zhangmengjie
+     */
+    public String getVersionName(Context context) {
+        PackageManager packageManager = context.getPackageManager();
+        PackageInfo packageInfo;
+        String versionName = "";
+        try {
+            packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
+            versionName = packageInfo.versionName;
+        } catch (PackageManager.NameNotFoundException e) {
+            e.printStackTrace();
+        }
+        return versionName;
+    }
+
+    /**
+     * 获取当前手机系统语言。
+     *
+     * @return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN”
+     */
+    public String getSystemLanguage() {
+        return Locale.getDefault().getLanguage();
+    }
+
+    /**
+     * 获取当前系统上的语言列表(Locale列表)
+     *
+     * @return 语言列表
+     */
+    public Locale[] getSystemLanguageList() {
+        return Locale.getAvailableLocales();
+    }
+
+    /**
+     * 获取当前手机系统版本号
+     *
+     * @return 系统版本号
+     */
+    public String getSystemVersion() {
+        return android.os.Build.VERSION.RELEASE;
+    }
+
+    /**
+     * 获取手机型号
+     *
+     * @return 手机型号
+     */
+    public String getSystemModel() {
+        return android.os.Build.MODEL;
+    }
+
+    /**
+     * 获取手机厂商
+     *
+     * @return 手机厂商
+     */
+    public String getDeviceBrand() {
+        return android.os.Build.BRAND;
+    }
+
+    /**
+     * 获取手机IMEI(需要“android.permission.READ_PHONE_STATE”权限)
+     *
+     * @return 手机IMEI
+     */
+    public String getIMEI(Context ctx) {
+        TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Activity.TELEPHONY_SERVICE);
+        if (tm != null) {
+            return tm.getDeviceId();
+        }
+        return null;
+    }
+
+}

+ 75 - 0
src/org/cocos2dx/javascript/util/ImageUtil.java

@@ -0,0 +1,75 @@
+package org.cocos2dx.javascript.util;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.PixelFormat;
+import android.graphics.drawable.Drawable;
+import android.util.Base64;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+public class ImageUtil {
+
+    public Bitmap DrawableToBitmap(Drawable drawable) {
+
+        Bitmap bitmap = Bitmap.createBitmap(
+                drawable.getIntrinsicWidth(),
+                drawable.getIntrinsicHeight(),
+                drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);
+        Canvas canvas = new Canvas(bitmap);
+
+        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
+
+        drawable.draw(canvas);
+
+        return bitmap;
+
+    }
+
+
+    /**
+     * bitmap转Base64
+     */
+    public String bitmapToBase64(Bitmap bitmap) {
+        String result = null;
+        ByteArrayOutputStream baos = null;
+        try {
+            if (bitmap != null) {
+                baos = new ByteArrayOutputStream();
+                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
+
+                baos.flush();
+                baos.close();
+
+                byte[] bitmapBytes = baos.toByteArray();
+                result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (baos != null) {
+                    baos.flush();
+                    baos.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return result;
+    }
+
+    /**
+     * base64转为bitmap
+     *
+     * @param base64Data
+     * @return
+     */
+    public Bitmap base64ToBitmap(String base64Data) {
+        byte[] bytes = Base64.decode(base64Data, Base64.DEFAULT);
+        return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
+    }
+
+}

+ 9 - 0
src/org/cocos2dx/javascript/util/Logger.java

@@ -0,0 +1,9 @@
+package org.cocos2dx.javascript.util;
+
+import android.util.Log;
+
+public class Logger {
+    public static void e(String message) {
+        Log.e(Consts.mApplicatonContext.getPackageName(), message);
+    }
+}

+ 70 - 0
src/org/cocos2dx/javascript/util/PackageUtil.java

@@ -0,0 +1,70 @@
+package org.cocos2dx.javascript.util;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+
+import org.cocos2dx.javascript.bean.AppInfo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PackageUtil {
+    private ArrayList<AppInfo> mSystemAppList;
+    private ArrayList<AppInfo> mOtherAppList;
+    private ImageUtil mImageUtil;
+
+    public PackageUtil(Context context) {
+        mImageUtil = new ImageUtil();
+        getPackageAll(context);
+    }
+
+
+    public List<AppInfo> getSystemAppList() {
+        return mSystemAppList;
+    }
+
+    public List<AppInfo> getOtherAppList() {
+        return mOtherAppList;
+    }
+
+
+    public void getPackageAll(final Context context) {
+        new Thread(new Runnable() {
+            public void run() {
+                // a potentially time consuming task
+                mSystemAppList = new ArrayList<>();
+                mOtherAppList = new ArrayList<>();
+                try {
+                    List<PackageInfo> packageInfos = context.getPackageManager().getInstalledPackages(context.getPackageManager().GET_ACTIVITIES |
+                            context.getPackageManager().GET_SERVICES);
+                    for (PackageInfo packageInfo : packageInfos) {
+                        AppInfo tmpInfo = new AppInfo();
+                        tmpInfo.appName = packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString();
+                        tmpInfo.packageName = packageInfo.packageName;
+                        tmpInfo.versionName = packageInfo.versionName;
+                        tmpInfo.versionCode = packageInfo.versionCode;
+                        tmpInfo.appIcon = "data:image/jpg;base64," + mImageUtil.bitmapToBase64(mImageUtil.DrawableToBitmap(packageInfo.applicationInfo.loadIcon(context.getPackageManager())));
+                        if (isSystemApp(packageInfo)) {
+                            tmpInfo.isSystemApp = 0;
+                            mSystemAppList.add(tmpInfo);
+                        } else {
+                            tmpInfo.isSystemApp = 1;
+                            mOtherAppList.add(tmpInfo);
+                        }
+                    }
+                } catch (Throwable t) {
+                    t.printStackTrace();
+                }
+            }
+        }).start();
+
+    }
+
+    // 通过packName得到PackageInfo,作为参数传入即可
+    private boolean isSystemApp(PackageInfo pi) {
+        boolean isSysApp = (pi.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1;
+        boolean isSysUpd = (pi.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 1;
+        return isSysApp || isSysUpd;
+    }
+}