From ba1aa39ac3a2c74dc9c5fe1974d37c0bb8741d0d Mon Sep 17 00:00:00 2001 From: Etrent Date: Wed, 12 Oct 2022 16:59:16 +0800 Subject: [PATCH] save --- .DS_Store | Bin 8196 -> 8196 bytes assets/btn_click.ts | 60 +++-- native/.DS_Store | Bin 6148 -> 6148 bytes native/engine/.DS_Store | Bin 6148 -> 8196 bytes native/engine/android/.DS_Store | Bin 0 -> 6148 bytes native/engine/android/CMakeLists.txt | 15 ++ native/engine/android/Post-service.cmake | 1 + native/engine/android/Pre-service.cmake | 1 + native/engine/android/app/.DS_Store | Bin 0 -> 6148 bytes native/engine/android/app/AndroidManifest.xml | 42 +++ native/engine/android/app/build.gradle | 115 ++++++++ native/engine/android/app/proguard-rules.pro | 42 +++ native/engine/android/app/src/.DS_Store | Bin 0 -> 6148 bytes native/engine/android/app/src/com/.DS_Store | Bin 0 -> 6148 bytes .../android/app/src/com/cocos/.DS_Store | Bin 0 -> 6148 bytes .../android/app/src/com/cocos/game/.DS_Store | Bin 0 -> 6148 bytes .../app/src/com/cocos/game/AppActivity.kt | 250 ++++++++++++++++++ .../src/com/cocos/game/Server/BridgeServer.kt | 98 +++++++ native/engine/android/build-cfg.json | 8 + native/engine/android/build.gradle | 63 +++++ native/engine/android/gradle/.DS_Store | Bin 0 -> 6148 bytes .../android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + .../android/instantapp/AndroidManifest.xml | 52 ++++ native/engine/android/instantapp/build.gradle | 93 +++++++ .../android/instantapp/proguard-rules.pro | 42 +++ .../src/com/cocos/game/InstantActivity.java | 125 +++++++++ native/engine/android/jni/main.cpp | 29 ++ .../android/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 6780 bytes .../android/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3964 bytes .../android/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 9915 bytes .../android/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 16236 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 23478 bytes native/engine/android/res/values/strings.xml | 3 + 34 files changed, 1027 insertions(+), 18 deletions(-) create mode 100644 native/engine/android/.DS_Store create mode 100755 native/engine/android/CMakeLists.txt create mode 100644 native/engine/android/Post-service.cmake create mode 100644 native/engine/android/Pre-service.cmake create mode 100644 native/engine/android/app/.DS_Store create mode 100644 native/engine/android/app/AndroidManifest.xml create mode 100644 native/engine/android/app/build.gradle create mode 100644 native/engine/android/app/proguard-rules.pro create mode 100644 native/engine/android/app/src/.DS_Store create mode 100644 native/engine/android/app/src/com/.DS_Store create mode 100644 native/engine/android/app/src/com/cocos/.DS_Store create mode 100644 native/engine/android/app/src/com/cocos/game/.DS_Store create mode 100644 native/engine/android/app/src/com/cocos/game/AppActivity.kt create mode 100644 native/engine/android/app/src/com/cocos/game/Server/BridgeServer.kt create mode 100644 native/engine/android/build-cfg.json create mode 100644 native/engine/android/build.gradle create mode 100644 native/engine/android/gradle/.DS_Store create mode 100644 native/engine/android/gradle/wrapper/gradle-wrapper.jar create mode 100644 native/engine/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 native/engine/android/instantapp/AndroidManifest.xml create mode 100644 native/engine/android/instantapp/build.gradle create mode 100644 native/engine/android/instantapp/proguard-rules.pro create mode 100644 native/engine/android/instantapp/src/com/cocos/game/InstantActivity.java create mode 100644 native/engine/android/jni/main.cpp create mode 100644 native/engine/android/res/mipmap-hdpi/ic_launcher.png create mode 100644 native/engine/android/res/mipmap-mdpi/ic_launcher.png create mode 100644 native/engine/android/res/mipmap-xhdpi/ic_launcher.png create mode 100644 native/engine/android/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 native/engine/android/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 native/engine/android/res/values/strings.xml diff --git a/.DS_Store b/.DS_Store index 4c8349bd96fa36d4e708d40f1914b4207e24470a..bb2a1d475c86bb29d5f8f5ad36d98f1398f77553 100644 GIT binary patch delta 39 ncmZp1XmQw3BgkQ4X0D@PVq!7*n~?qH!-Cq3aFNa5g!p&??`R8K delta 39 vcmZp1XmQw3BgkQ5Y^I}NYG^+Bn~?qH!-Cq3942O_ItnHhW}CkW@$mux?eYsu diff --git a/assets/btn_click.ts b/assets/btn_click.ts index 8b8f05a..11bb6d0 100644 --- a/assets/btn_click.ts +++ b/assets/btn_click.ts @@ -1,4 +1,4 @@ -import { _decorator, Component, Node, native } from "cc"; +import { _decorator, Component, Node, native,sys } from "cc"; const { ccclass, property } = _decorator; import { createRequestData } from "./WalletSdkUtils"; @@ -21,11 +21,20 @@ export class btn_click extends Component { */ public btn_onclick1() { console.info("点击了按钮"); - var ret = native.reflection.callStaticMethod( - "JSHandleClass", - "walleConnectFun:", - "imtokenv2" - ); + if (sys.platform == sys.Platform.ANDROID) { + var ret = native.reflection.callStaticMethod( + 'com/cocos/game/AppActivity', + "initWallet", + "()V" + ); + } else if (sys.platform == sys.Platform.IOS) { + var ret = native.reflection.callStaticMethod( + "JSHandleClass", + "walleConnectFun:", + "imtokenv2" + ); + } + } //发送交易 @@ -37,18 +46,33 @@ export class btn_click extends Component { "Mint", "0x4eDE150f62dc21aDC0F39a2A02c95A5Cc1FD7B2C", ); - var jsonObj = { - "method": "eth_sendTransaction", - "params": JSON.stringify(temp) - }; - var jsonStr = JSON.stringify(jsonObj); - ///0x2eB535d54382eA5CED9183899916A9d39e093877 - - var ret = native.reflection.callStaticMethod( - "JSHandleClass", - "sendContractFun:", - jsonStr - ); + if (sys.platform == sys.Platform.ANDROID) { + var ret = native.reflection.callStaticMethod( + 'com/cocos/game/AppActivity', + 'sendCustomMessage', + '(Ljava/lang/String;)Ljava/lang/String;', + JSON.stringify({ + method: 'eth_sendTransaction', + params: [ + temp + ], + }) + ); + } else if (sys.platform == sys.Platform.IOS) { + var jsonObj = { + "method": "eth_sendTransaction", + "params": JSON.stringify(temp) + }; + var jsonStr = JSON.stringify(jsonObj); + ///0x2eB535d54382eA5CED9183899916A9d39e093877 + + var ret = native.reflection.callStaticMethod( + "JSHandleClass", + "sendContractFun:", + jsonStr + ); + } + } public async btn_onclick3() { // console.info("点击了按钮"); diff --git a/native/.DS_Store b/native/.DS_Store index 139a04880052824d76507bb7dfaa32233197ee90..1d97f0f39486439dee9109b8c96158df38fa49ad 100644 GIT binary patch delta 21 ccmZoMXffDuf{DYz%v?vo#KdCr1tt?w07}LNN&o-= delta 21 ccmZoMXffDuf{DY#%v49g#KLUz1tt?w07{GoMgRZ+ diff --git a/native/engine/.DS_Store b/native/engine/.DS_Store index 4dd4f2e41bfd31dc78ac042975f27c88026b10f5..31e896f16b4c2468ba85e2b8e0ccdd1ba54c4bec 100644 GIT binary patch delta 233 zcmZoMXmOBWU|?W$DortDU;r^WfEYvza8E20o2aKK3KC!h@);QN88R7CJah7slX5l- za)_~PR^aGmUd+zHF|mQg5u}WrA(0`EA%&p`S!sR}$TXlCvOrqzKNtX67^){{urzR3 zn3?M+n3z~h{=i}{jb>a~a8X`PeqK6IE8}J!7DeXG{yh7cxg@xO0X=gxRCL?k*R?;25!h%6Mw$_lDegy*@O zkdhu*0}A#L_uVjd(PMW;3;r!mgOnoLrE<$U$<7A*u`6qV} z21(jzd={m0<;>EuwQQ|gFS@VdaW{3+QPOdS&$#zEjzjmj?YK_@f848G+=-*q2_kY5{^lFZ}!zhfSeT=a78o4y0fI{+Ullrtr`&6gblu%63 z96ukSpXcXn&bAJ_Az1a`$uHW8FR=Tdc%98;%pH0F-2?LJK4K@7qSR5pp>)oce|bLU z(huTXhVJ`Z{tCK(I*ZNL7Bbh``kuvB^B1yMSkqiCSHNW?*>r&EX?t9Jo#V5NTt^hl zvCd59S-(IJu^%{3o2Y$c`UtW5Xw^|4s$3R*lz4~beVm7nAuN8{1Mzvx=d&#BlVTj= zU76QHccJL>VXZFIFcXFW!@&Q_0Dm8B6vnp3OriXApps7jU4 z7=Z|73RI>-KQV-UI|yZt`L@>26e@EPGBW(=$U?tRgnoJmTdI?2D>SuXz%Wo`psczz zzW?toe*YJZOwTZ282G0c5S88TZU;-!ck7A8@m*`9yhLGPy-cArL8Y%_+2E^q9YqS} ZY;FMC8Z(6$ftWu6k_J;527W68-vIh$6Tbie literal 0 HcmV?d00001 diff --git a/native/engine/android/CMakeLists.txt b/native/engine/android/CMakeLists.txt new file mode 100755 index 0000000..39a67f3 --- /dev/null +++ b/native/engine/android/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.8) + +option(APP_NAME "Project Name" "cocos_demo_3") +project(${APP_NAME} CXX) +set(CC_LIB_NAME cocos) +set(CC_PROJECT_DIR ${CMAKE_CURRENT_LIST_DIR}) +set(CC_PROJ_SOURCES) +set(CC_COMMON_SOURCES) +set(CC_ALL_SOURCES) + +include(${CMAKE_CURRENT_LIST_DIR}/../common/CMakeLists.txt) + +cc_android_before_target(${CC_LIB_NAME}) +add_library(${CC_LIB_NAME} SHARED ${CC_ALL_SOURCES}) +cc_android_after_target(${CC_LIB_NAME}) diff --git a/native/engine/android/Post-service.cmake b/native/engine/android/Post-service.cmake new file mode 100644 index 0000000..16fd033 --- /dev/null +++ b/native/engine/android/Post-service.cmake @@ -0,0 +1 @@ +# Supported for Cocos Service! \ No newline at end of file diff --git a/native/engine/android/Pre-service.cmake b/native/engine/android/Pre-service.cmake new file mode 100644 index 0000000..16fd033 --- /dev/null +++ b/native/engine/android/Pre-service.cmake @@ -0,0 +1 @@ +# Supported for Cocos Service! \ No newline at end of file diff --git a/native/engine/android/app/.DS_Store b/native/engine/android/app/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ee0cceff2e8c5758aff97d41e36e15f6dbc58923 GIT binary patch literal 6148 zcmeHKO>Yx15FIC>-KZc%d`P_@t;Ds2097gKWgE(Y0~Z#-0Z`cOE@4%79qmVh6h+!I z{1~qM68;Xnu^mK`=86z_r16^_&$Hv_WE~Tc7}m*sq8<@>aK=^_%_YYD>}%GtnJu8u zV<^ffq30A)zE_t8N-@>ge~FR$G{$HVB1!2A@9PThI!*MEJ!@~U`RPV73q#S@v8)nM>lwA!63Tif2Yx8uDFKdNb1MO9r6qv8!ey;MrZi#Up3 zW$AR(yZJ=rRg~pvp$S=%qU7!CEKk&QsOmf^H8(UJUf1i6db_jP;lZOle}DgQzUR*# zKNui>crc%Ly<2zg9laQx$@5%&#wUjf{HnBFv$z0WnO*ZmSmaXWV`LW9izYWR7n!u-F(x4@?*; z&`^cFVhBS=-nVsu#m1naldzW$VP_Whh9dOr7~j|BBm#r3bqY8ImKA85#~z>mPdDHH zmr3r)Dc}_NrxXyKlkjASCE2reZE<|o`tbK~Hm++7{-PkzM=@&oDBgu@L*C~A7+7o! SA_H@O1hfpUaSHrV1%3j2WP{cK literal 0 HcmV?d00001 diff --git a/native/engine/android/app/AndroidManifest.xml b/native/engine/android/app/AndroidManifest.xml new file mode 100644 index 0000000..9f5c4f5 --- /dev/null +++ b/native/engine/android/app/AndroidManifest.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/native/engine/android/app/build.gradle b/native/engine/android/app/build.gradle new file mode 100644 index 0000000..f199209 --- /dev/null +++ b/native/engine/android/app/build.gradle @@ -0,0 +1,115 @@ +import org.apache.tools.ant.taskdefs.condition.Os + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +RES_PATH = RES_PATH.replace("\\", "/") +COCOS_ENGINE_PATH = COCOS_ENGINE_PATH.replace("\\", "/") + +buildDir = "${RES_PATH}/proj/build/$project.name" +android { + compileSdkVersion PROP_COMPILE_SDK_VERSION.toInteger() + buildToolsVersion PROP_BUILD_TOOLS_VERSION + ndkPath PROP_NDK_PATH + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + defaultConfig { + applicationId APPLICATION_ID + minSdkVersion PROP_MIN_SDK_VERSION + targetSdkVersion PROP_TARGET_SDK_VERSION + versionCode 1 + versionName "1.0" + + externalNativeBuild { + cmake { + targets "cocos" + arguments "-DRES_DIR=${RES_PATH}", "-DCOCOS_X_PATH=${COCOS_ENGINE_PATH}", "-DANDROID_STL=c++_static", "-DANDROID_TOOLCHAIN=clang", "-DANDROID_ARM_NEON=TRUE", "-DANDROID_LD=gold" + } + ndk { abiFilters PROP_APP_ABI.split(':') } + } + } + + sourceSets.main { + java.srcDirs "../src", "src" + res.srcDirs "../res", 'res' + jniLibs.srcDirs "../libs", 'libs' + manifest.srcFile "AndroidManifest.xml" + assets.srcDir "${RES_PATH}/data" + jniLibs { + // Vulkan validation layer + // srcDir "${android.ndkDirectory}/sources/third_party/vulkan/src/build-android/jniLibs" + } + } + + externalNativeBuild { + cmake { + path "../CMakeLists.txt" + buildStagingDirectory "${RES_PATH}/proj/build" + } + } + + signingConfigs { + + release { + if (project.hasProperty("RELEASE_STORE_FILE") && !RELEASE_STORE_FILE.isEmpty()) { + 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 + } + // resValue "string", "app_name", PROP_APP_NAME + } + + debug { + debuggable true + jniDebuggable true + renderscriptDebuggable true + // resValue "string", "app_name", "${PROP_APP_NAME}-dbg" + // applicationIdSuffix ".debug" + } + } +} + +dependencies { + implementation fileTree(dir: '../libs', include: ['*.jar','*.aar']) + implementation fileTree(dir: 'libs', include: ['*.jar','*.aar']) + implementation fileTree(dir: "${COCOS_ENGINE_PATH}/cocos/platform/android/java/libs", include: ['*.jar']) + implementation project(':libservice') + implementation project(':libcocos') + + implementation "org.java-websocket:Java-WebSocket:1.4.0" + + implementation "com.github.komputing:khex:1.0.0-RC6" + + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$versions.kotlin" + + implementation 'com.github.WalletConnect:kotlin-walletconnect-lib:0.9.6' + + implementation "androidx.appcompat:appcompat:$versions.androidx_app_compat" + implementation "androidx.multidex:multidex:$versions.multidex" + + implementation 'com.squareup.moshi:moshi:1.8.0' + implementation "com.squareup.okhttp3:okhttp:$versions.okhttp" + + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.0.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.0.0' + + implementation 'com.google.code.gson:gson:2.9.1' +} diff --git a/native/engine/android/app/proguard-rules.pro b/native/engine/android/app/proguard-rules.pro new file mode 100644 index 0000000..dbb43fb --- /dev/null +++ b/native/engine/android/app/proguard-rules.pro @@ -0,0 +1,42 @@ +# 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 com.cocos.** { *; } +-dontwarn com.cocos.** + +# 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 + +-keep public class com.google.** { *; } + +-dontwarn android.webkit.WebView +-dontwarn android.net.http.SslError +-dontwarn android.webkit.WebViewClient diff --git a/native/engine/android/app/src/.DS_Store b/native/engine/android/app/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..40a1e2a647e2cf3ca68a8e43a06e219aa065891b GIT binary patch literal 6148 zcmeHKO;5r=5Zwio5@NzZ6OK*15=AA5@lp{FUairC8l*t9v2+O^av&r<>mTx$_;>Wp z?qWjFiw6_QOfvhXvoqVw+h(^Tgpl=dXHSTN5W;~Hrg9j*5t=7ml9ctNfs)ox?I2PC zo@hCi|G)t4U0Sq-620?iVgF7rv-6=v7hj3AGJo~VZAlDp{GlwqF`>ff~&AQX%;q5RXl2iad)5-!cG?aXPJ44@+*PQk#|B>Ct`}_Ca+v%Q;)yyT=#Jr>GaJ7elqXA;v8OK z*lM2rK^&?00iJpEJc^MSU5X5dd5_youpQriFk literal 0 HcmV?d00001 diff --git a/native/engine/android/app/src/com/.DS_Store b/native/engine/android/app/src/com/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9044e66414f055ff658ea989cef4c3a86d77f77e GIT binary patch literal 6148 zcmeHK%}T>S5Z>*NO(;SS3OxqA7Oh%p#Y?R9;MIs8RBF-|4aTfAsXdfJ&iX<=iLawG zvskPflyr~eBvQQ~ zQo%wjJN_pFxOYX-6N+?x|L~JI1l@cmq1T^_493Z$+3DBdF$$BkUVoFhe4)5fvPxFj zy7unW*h~F%l(hZfC0?B=6$LZf56;8ExLa8}QgP~s@nA>^VSfN2R~KR2SL3!C#r=eG zJw0LBmffvXCzDolujVuwt!d4f?C;dU-fd2&wza;ob#U6fj~-(6Oz$ite48Yz250aB z#@vdYykQ)v_!hjgj9DZjGr$Zm1IxvLIpwVKaxIHj!wfJ3zrX;V4-P1zYcSJDM+Xel z0st1kO#(LlIAV@t&^4H8gc%U2Qvr3VG%beI>EL%voNF-CsMCcs&4)BkmZn3I^mMqt zL*YWY8hK;}n1QbhVDAS~!TNvvbN^34JTL>yz;ZGm3mvc1hP9d6y0A*DwGQYFCj?KLSJp56r-yGVlST+*W}A literal 0 HcmV?d00001 diff --git a/native/engine/android/app/src/com/cocos/.DS_Store b/native/engine/android/app/src/com/cocos/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c258f5992a367ec3afb92e846194e07779dc00f7 GIT binary patch literal 6148 zcmeHKO-sW-5Z$d+6N=D-g2#Z@qV)rsVK*a$kj+7RU5Kg>!hsT&Tnyg`&69qSlJ(30C9QFssGBHJ z5uRy5mjBNH?Oj>iicoY#=hOb}V{Y|Li!Njm7Y+LlcAsCOha~Q2_4=zU&6H>7=AC(` z;#>uHY8Yf;Ht09Q-UU6KDwRZq9Y$wyXV|JP9;h@6sz(p&h7_#%#x8DIvOfoWvGo^?)T8jItam;q+sR}9ek;6Vv}i@8C4bYRde z0I&?V7TEgNALx+-=v&MU!UK^e6=+hWZ84-kgC<=_{bsCV-z;s1B5mU# zJsmEjZ;(f3fEoD60QG*5D&7A_KllGShzDkX8JJE6Wce^SY@#-Mw|=RT?phCe4JDzt m+~6byhQ5jsOIPtSR15qb89?7+ZV(;_{|IOrcwh$pl!14-T~wq1 literal 0 HcmV?d00001 diff --git a/native/engine/android/app/src/com/cocos/game/.DS_Store b/native/engine/android/app/src/com/cocos/game/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f3711bca8abb2551112ec8696d4ad8560e24c9c0 GIT binary patch literal 6148 zcmeH~KT88a5XIkUihv*~Ew>j0Ynw}mg|%Nm5*slPi;G})ogZ7@{82nk3mXf06K3D; z+{|t6SKQnJu+`!I5?BD3(_QiE!_@q``^1haVpKZsu|nG%=15aML&NF<4h(3A|L`HAOa%rTLRvDY4ej*jUpfdBJfGT-w%!M z+LaEe@#^3ZM*!-K;V{nQEJ1A^pmwE0DkC(@Qfii39WgA+8E=)>l@6&{4vU?6pW4~# zgkrHf<1Nx*U8+VA5P>m)<6JJh|6kL8IRB4}v=RXk_*VpMw!U4j_(;`TClBYnw$bnC rAI98B=Mb%!8m*WMZ^dU{@|w?iy(=A3qnz<5r|Lt%xyVG|F9^H?=d~Px literal 0 HcmV?d00001 diff --git a/native/engine/android/app/src/com/cocos/game/AppActivity.kt b/native/engine/android/app/src/com/cocos/game/AppActivity.kt new file mode 100644 index 0000000..5a5f747 --- /dev/null +++ b/native/engine/android/app/src/com/cocos/game/AppActivity.kt @@ -0,0 +1,250 @@ +@file:JvmName("AppActivity") +/**************************************************************************** + * 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 com.cocos.game + +import android.content.res.Configuration + +import com.cocos.service.SDKWrapper +import com.cocos.lib.CocosActivity + +import android.os.Bundle +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.view.View +import com.example.walletconnect_demo.server.BridgeServer +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import okhttp3.OkHttpClient +import org.komputing.khex.extensions.toNoPrefixHexString +import org.walletconnect.Session +import org.walletconnect.impls.* +import org.walletconnect.nullOnThrow +import java.io.File +import java.util.* +import com.google.gson.Gson +import kotlinx.coroutines.launch +import com.squareup.moshi.Moshi + +public class AppActivity : CocosActivity(), Session.Callback { + override fun onCreate(savedInstanceState: Bundle?) { + 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.shared().init(this) +// initBridge() + initMoshi() + initClient() + initSessionStorage() + + instance = this; + } + + override fun onStatus(status: Session.Status) { + when(status) { + Session.Status.Approved -> sessionApproved() + Session.Status.Closed -> sessionClosed() + Session.Status.Connected, + Session.Status.Disconnected, + is Session.Status.Error -> { + // Do Stuff + } + } + } + + override fun onMethodCall(call: Session.MethodCall) { + } + + private fun sessionApproved() { + println("--------sessionApproved--------------") + println(session.approvedAccounts()) + + } + + private fun sessionClosed() { + println("--------sessionClosed--------------") + println(session.approvedAccounts()) + } + + private fun initClient() { + client = OkHttpClient.Builder().build() + } + + private fun initMoshi() { + moshi = Moshi.Builder().build() + } + + private fun initBridge() { + bridge = BridgeServer(moshi) + bridge.start() + } + + private fun initSessionStorage() { + storage = FileWCSessionStore(File(cacheDir, "session_store.json").apply { createNewFile() }, moshi) + } + + override fun onResume() { + super.onResume() + SDKWrapper.shared().onResume() + } + + override fun onPause() { + super.onPause() + SDKWrapper.shared().onPause() + } + + override fun 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.shared().onDestroy() + } + +// override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { +// super.onActivityResult(requestCode, resultCode, data) +// SDKWrapper.shared().onActivityResult(requestCode, resultCode, data) +// } + + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + SDKWrapper.shared().onNewIntent(intent) + } + + override fun onRestart() { + super.onRestart() + SDKWrapper.shared().onRestart() + } + + override fun onStop() { + super.onStop() + SDKWrapper.shared().onStop() + } + + override fun onBackPressed() { + SDKWrapper.shared().onBackPressed() + super.onBackPressed() + } + + override fun onConfigurationChanged(newConfig: Configuration) { + SDKWrapper.shared().onConfigurationChanged(newConfig) + super.onConfigurationChanged(newConfig) + } + + override protected fun onRestoreInstanceState(savedInstanceState: Bundle) { + SDKWrapper.shared().onRestoreInstanceState(savedInstanceState) + super.onRestoreInstanceState(savedInstanceState) + } + + override protected fun onSaveInstanceState(outState: Bundle) { + SDKWrapper.shared().onSaveInstanceState(outState) + super.onSaveInstanceState(outState) + } + + override protected fun onStart() { + SDKWrapper.shared().onStart() + super.onStart() + } + + + override fun onLowMemory() { + SDKWrapper.shared().onLowMemory() + super.onLowMemory() + } + + fun test(){ + } + + companion object { + lateinit var instance: AppActivity ; + private lateinit var client: OkHttpClient + private lateinit var moshi: Moshi + private lateinit var bridge: BridgeServer + private lateinit var storage: WCSessionStore + lateinit var config: Session.Config + lateinit var session: Session + + fun resetSession() { + nullOnThrow { session }?.clearCallbacks() + val key = ByteArray(32).also { Random().nextBytes(it) }.toNoPrefixHexString() + config = Session.Config(UUID.randomUUID().toString(), "https://bridge.walletconnect.org/", key) + session = WCSession(config, + MoshiPayloadAdapter(moshi), + storage, + OkHttpTransport.Builder(client, moshi), + Session.PeerMeta(name = "Example App") + ) + session.offer() + } + @JvmStatic public fun initWallet() { + println("--------initWallet--------------") + resetSession() + session.addCallback(instance) + val i = Intent(Intent.ACTION_VIEW) + i.data = Uri.parse(config.toWCUri()) + instance.startActivity(i) + // instance.test() + } + ///解析庄给的json字符串 并且使用custom方法发送给钱包 + @JvmStatic public fun sendCustomMessage(jsonStr:String):String{ + ///解析成实体类 + var str = Gson().fromJson(jsonStr,argsModel::class.java); + session.performMethodCall( + Session.MethodCall.Custom( + System.currentTimeMillis(), + str.method!!, + str.params!!, + ), + ::handleResponse + ) + val intent = Intent(Intent.ACTION_VIEW) + intent.data = Uri.parse("wc:") + intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK + instance.startActivity(intent) + return "ok" + } + private fun handleResponse(resp: Session.MethodCall.Response) { + println(resp.result as? String) + } + } +} +class argsModel { + var method: String? = null + var params: List? = null + + override fun toString(): String { + return "argsModel(method=$method, params=$params)" + } +} + diff --git a/native/engine/android/app/src/com/cocos/game/Server/BridgeServer.kt b/native/engine/android/app/src/com/cocos/game/Server/BridgeServer.kt new file mode 100644 index 0000000..3a94b83 --- /dev/null +++ b/native/engine/android/app/src/com/cocos/game/Server/BridgeServer.kt @@ -0,0 +1,98 @@ +package com.example.walletconnect_demo.server + + +import android.util.Log +import com.squareup.moshi.Moshi +import com.squareup.moshi.Types +import org.java_websocket.WebSocket +import org.java_websocket.handshake.ClientHandshake +import org.java_websocket.server.WebSocketServer +import java.lang.Exception +import java.lang.ref.WeakReference +import java.net.InetSocketAddress +import java.util.* +import java.util.concurrent.ConcurrentHashMap + +class BridgeServer(moshi: Moshi) : WebSocketServer(InetSocketAddress(PORT)) { + + private val adapter = moshi.adapter>( + Types.newParameterizedType( + Map::class.java, + String::class.java, + String::class.java + ) + ) + + private val pubs: MutableMap>> = ConcurrentHashMap() + private val pubsLock = Any() + private val pubsCache: MutableMap = ConcurrentHashMap() + + override fun onOpen(conn: WebSocket?, handshake: ClientHandshake?) { + Log.d("#####", "onOpen: ${conn?.remoteSocketAddress?.address?.hostAddress}") + } + + override fun onClose(conn: WebSocket?, code: Int, reason: String?, remote: Boolean) { + Log.d("#####", "onClose: ${conn?.remoteSocketAddress?.address?.hostAddress}") + conn?.let { cleanUpSocket(it) } + } + + override fun onMessage(conn: WebSocket?, message: String?) { + Log.d("#####", "Message: $message") + try { + conn ?: error("Unknown socket") + message?.also { + val msg = adapter.fromJson(it) ?: error("Invalid message") + val type: String = msg["type"] ?: error("Type not found") + val topic: String = msg["topic"] ?: error("Topic not found") + when (type) { + "pub" -> { + var sendMessage = false + pubs[topic]?.forEach { r -> + r.get()?.apply { + send(message) + sendMessage = true + } + } + if (!sendMessage) { + Log.d("#####", "Cache message: $message") + pubsCache[topic] = message + } + } + "sub" -> { + pubs.getOrPut(topic, { mutableListOf() }).add(WeakReference(conn)) + pubsCache[topic]?.let { cached -> + Log.d("#####", "Send cached: $cached") + conn.send(cached) + } + } + else -> error("Unknown type") + } + } + } catch (e: Exception) { + e.printStackTrace() + } + } + + override fun onStart() { + Log.d("#####", "Server started") + connectionLostTimeout = 0 + } + + override fun onError(conn: WebSocket?, ex: Exception?) { + Log.d("#####", "onError") + ex?.printStackTrace() + conn?.let { cleanUpSocket(it) } + } + + private fun cleanUpSocket(conn: WebSocket) { + synchronized(pubsLock) { + pubs.forEach { + it.value.removeAll { r -> r.get().let { v -> v == null || v == conn } } + } + } + } + + companion object { + val PORT = 5000 + Random().nextInt(60000) + } +} \ No newline at end of file diff --git a/native/engine/android/build-cfg.json b/native/engine/android/build-cfg.json new file mode 100644 index 0000000..fb658e2 --- /dev/null +++ b/native/engine/android/build-cfg.json @@ -0,0 +1,8 @@ +{ + "ndk_module_path" :[ + "${COCOS_ROOT}", + "${COCOS_ROOT}/cocos", + "${COCOS_ROOT}/external" + ], + "copy_resources": [] +} diff --git a/native/engine/android/build.gradle b/native/engine/android/build.gradle new file mode 100644 index 0000000..88ad761 --- /dev/null +++ b/native/engine/android/build.gradle @@ -0,0 +1,63 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext { + versions = [ + kotlin : "1.4.31", + moshi : '1.8.0', + okhttp : '3.11.0', + jupiter : '5.7.0', + + 'minSdk' : 14, + 'compileSdk' : 28, + 'buildTools' : '28.0.3', + 'androidPlugin' : '3.4.0', + + androidx_app_compat : '1.0.2', + androidx_card_view : '1.0.0', + androidx_constraint_layout: '1.1.3', + androidx_lifecycle : '2.0.0', + androidx_test_ext : '1.1.0', + androidx_recycler_view : '1.0.0', + androidx_room : '2.0.0', + + multidex : '2.0.1', + ] + + ext.deps = [ + android: [ + 'runtime' : 'com.google.android:android:4.1.1.4', + 'gradlePlugin': "com.android.tools.build:gradle:${versions.androidPlugin}", + ] + ] + } + repositories { + google() + jcenter() + maven { url="https://jitpack.io" } + } + dependencies { + classpath 'com.android.tools.build:gradle:4.1.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin" + classpath "org.jetbrains.kotlin:kotlin-android-extensions:$versions.kotlin" + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + jcenter() + flatDir { + dirs 'libs' + } + mavenCentral() + maven { url "https://jitpack.io" } + } +} + + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/native/engine/android/gradle/.DS_Store b/native/engine/android/gradle/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e4651c91bbdfea4a9676e1b398b1b4826f719613 GIT binary patch literal 6148 zcmeHK!D`z;5S?}0TEY~3Xu(H8t|4`bQz*Ttu6yV;3dx}@t`v(zRMi^Ut`5eabMiy| zlKxKeW_M*soZd>Q%Z!+LquCir`y_TXM5IQ`=@C(nh&(7`%ZGVHc${@hS}w8&ROT8p zN~!#q>x(4c%9g;t$N;~)4pmfAOfwvt_oow#@MrN3dU$ID-d1)}&1Xq&vVSJCJew~D zgI}t(*M9P}<8{2Q_a(a0RkVl~%lRlSKk?bA)_KzSadMWW)ui|Qy)G7UR-~mV$fhY$ zKA&gBR97RtET(f)8`%NR_xwq(zgi7nA0GrT>w{qR=GB1x;dZ<53a1H!=n$$)B)qwxrHb9?L7 wEP1aDpkJXZoL5`il)y1tF>-k;?n8|r9PVt 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ⅅ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 H-+%o-(+5aQ literal 0 HcmV?d00001 diff --git a/native/engine/android/gradle/wrapper/gradle-wrapper.properties b/native/engine/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..32af2dc --- /dev/null +++ b/native/engine/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Sep 05 15:37:26 CST 2022 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip diff --git a/native/engine/android/instantapp/AndroidManifest.xml b/native/engine/android/instantapp/AndroidManifest.xml new file mode 100644 index 0000000..15f7b34 --- /dev/null +++ b/native/engine/android/instantapp/AndroidManifest.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/native/engine/android/instantapp/build.gradle b/native/engine/android/instantapp/build.gradle new file mode 100644 index 0000000..1d322ae --- /dev/null +++ b/native/engine/android/instantapp/build.gradle @@ -0,0 +1,93 @@ +import org.apache.tools.ant.taskdefs.condition.Os + +apply plugin: 'com.android.application' + +RES_PATH = RES_PATH.replace("\\", "/") +COCOS_ENGINE_PATH = COCOS_ENGINE_PATH.replace("\\", "/") +buildDir = "${RES_PATH}/proj/build/$project.name" + +android { + compileSdkVersion PROP_COMPILE_SDK_VERSION.toInteger() + buildToolsVersion PROP_BUILD_TOOLS_VERSION + ndkPath PROP_NDK_PATH + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + defaultConfig { + applicationId "com.example.walletconnect_demo" + minSdkVersion PROP_MIN_SDK_VERSION + targetSdkVersion PROP_TARGET_SDK_VERSION + versionCode 1 + versionName "1.0" + + externalNativeBuild { + cmake { + targets "cocos" + arguments "-DRES_DIR=${RES_PATH}", "-DCOCOS_X_PATH=${COCOS_ENGINE_PATH}","-DANDROID_STL=c++_static", "-DANDROID_TOOLCHAIN=clang", "-DANDROID_ARM_NEON=TRUE", "-DANDROID_LD=gold" + cppFlags "-frtti -fexceptions -fsigned-char -DANDROID_INSTANT=1" + } + ndk { abiFilters PROP_APP_ABI.split(':') } + } + } + + sourceSets.main { + java.srcDirs "../src", "src" + res.srcDirs "../res", 'res' + jniLibs.srcDirs "../libs", 'libs' + manifest.srcFile "AndroidManifest.xml" + assets.srcDir "${RES_PATH}/data" + } + + externalNativeBuild { + cmake { + path "../CMakeLists.txt" + buildStagingDirectory "${RES_PATH}/proj/build" + } + } + + signingConfigs { + + release { + if (project.hasProperty("RELEASE_STORE_FILE") && !RELEASE_STORE_FILE.isEmpty()) { + 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 + } + // resValue "string", "app_name", PROP_APP_NAME + } + + debug { + debuggable true + jniDebuggable true + renderscriptDebuggable true + // resValue "string", "app_name", "${PROP_APP_NAME}-dbg" + // applicationIdSuffix ".debug" + } + } +} + +dependencies { + implementation fileTree(dir: '../libs', include: ['*.jar','*.aar']) + implementation fileTree(dir: 'libs', include: ['*.jar','*.aar']) + implementation fileTree(dir: "${COCOS_ENGINE_PATH}/cocos/platform/android/java/libs", include: ['*.jar']) + implementation project(':libservice') + implementation project(':libcocos') +} diff --git a/native/engine/android/instantapp/proguard-rules.pro b/native/engine/android/instantapp/proguard-rules.pro new file mode 100644 index 0000000..dbb43fb --- /dev/null +++ b/native/engine/android/instantapp/proguard-rules.pro @@ -0,0 +1,42 @@ +# 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 com.cocos.** { *; } +-dontwarn com.cocos.** + +# 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 + +-keep public class com.google.** { *; } + +-dontwarn android.webkit.WebView +-dontwarn android.net.http.SslError +-dontwarn android.webkit.WebViewClient diff --git a/native/engine/android/instantapp/src/com/cocos/game/InstantActivity.java b/native/engine/android/instantapp/src/com/cocos/game/InstantActivity.java new file mode 100644 index 0000000..318e839 --- /dev/null +++ b/native/engine/android/instantapp/src/com/cocos/game/InstantActivity.java @@ -0,0 +1,125 @@ +/**************************************************************************** +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 com.cocos.game; + +import android.os.Bundle; +import android.content.Intent; +import android.content.res.Configuration; + +import com.cocos.service.SDKWrapper; +import com.cocos.lib.CocosActivity; + +public class InstantActivity extends CocosActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // DO OTHER INITIALIZATION BELOW + SDKWrapper.shared().init(this); + + } + + @Override + protected void onResume() { + super.onResume(); + SDKWrapper.shared().onResume(); + } + + @Override + protected void onPause() { + super.onPause(); + SDKWrapper.shared().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.shared().onDestroy(); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + SDKWrapper.shared().onActivityResult(requestCode, resultCode, data); + } + + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + SDKWrapper.shared().onNewIntent(intent); + } + + @Override + protected void onRestart() { + super.onRestart(); + SDKWrapper.shared().onRestart(); + } + + @Override + protected void onStop() { + super.onStop(); + SDKWrapper.shared().onStop(); + } + + @Override + public void onBackPressed() { + SDKWrapper.shared().onBackPressed(); + super.onBackPressed(); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + SDKWrapper.shared().onConfigurationChanged(newConfig); + super.onConfigurationChanged(newConfig); + } + + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + SDKWrapper.shared().onRestoreInstanceState(savedInstanceState); + super.onRestoreInstanceState(savedInstanceState); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + SDKWrapper.shared().onSaveInstanceState(outState); + super.onSaveInstanceState(outState); + } + + @Override + protected void onStart() { + SDKWrapper.shared().onStart(); + super.onStart(); + } + + @Override + public void onLowMemory() { + SDKWrapper.shared().onLowMemory(); + super.onLowMemory(); + } +} diff --git a/native/engine/android/jni/main.cpp b/native/engine/android/jni/main.cpp new file mode 100644 index 0000000..3fa0653 --- /dev/null +++ b/native/engine/android/jni/main.cpp @@ -0,0 +1,29 @@ +/**************************************************************************** + Copyright (c) 2017-2020 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 "Game.h" + +cc::Application *cocos_main(int width, int height) { + return new Game(width, height); +} diff --git a/native/engine/android/res/mipmap-hdpi/ic_launcher.png b/native/engine/android/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..888c0d56abef8d4ca9123954777b6f820c967b6f GIT binary patch literal 6780 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 literal 0 HcmV?d00001 diff --git a/native/engine/android/res/mipmap-xxhdpi/ic_launcher.png b/native/engine/android/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1e5a6b3776489f893d8ed4768ae9fe356b4df8 GIT binary patch literal 16236 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‹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 literal 0 HcmV?d00001 diff --git a/native/engine/android/res/values/strings.xml b/native/engine/android/res/values/strings.xml new file mode 100644 index 0000000..337f48f --- /dev/null +++ b/native/engine/android/res/values/strings.xml @@ -0,0 +1,3 @@ + + cocos_demo_3 +