From 7df1cbcf31b128bdc6785cee6899e64ba879f241 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 11 十二月 2023 17:13:54 +0800
Subject: [PATCH] 0312 quick 海外

---
 Channel/Android/mlgtgame_quickhw/deps.gradle                                                   |    3 
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGameMain.java                   |   59 ++++
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformLogout.java    |   17 +
 Channel/Android/mlgtgame_quickhw/release/libs/library-release-mlgtgame_quickhw.aar             |    0 
 SdkProject/channel/mlgtgame_quickhw/res/values/strings.xml                                     |    7 
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdRoleLogin.java         |   27 +
 SdkProject/library/build.gradle                                                                |   46 +-
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdRoleLevelUp.java       |   26 +
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformPay.java       |   33 ++
 Channel/Android/mlgtgame_quickhw/AndroidManifest.xml                                           |   17 +
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPayFinished.java       |   16 +
 SdkProject/channel/mlgtgame_quickhw/deps.gradle                                                |    3 
 SdkProject/channel/mlgtgame_quickhw/assets/QHinfo                                              |    1 
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdOpenDashboard.java     |   17 +
 SdkProject/library/google-services.json                                                        |   48 --
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGamePlatform.java               |    9 
 SdkProject/channel/mlgtgame_quickhw/res/xml/filepaths.xml                                      |   13 
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdCreateRole.java        |   25 +
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformLogin.java     |   18 +
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformInit.java      |   17 +
 SdkProject/channel/mlgtgame_quickhw/config.properties                                          |    1 
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGameApp.java                    |   25 +
 SdkProject/channel/mlgtgame_quickhw/AndroidManifest.xml                                        |   86 ++++++
 SdkProject/library/libs/quickgame_hw_2.3.3.aar                                                 |    0 
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdTutorialFinish.java    |   15 +
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/MySdkMgr.java                     |  236 ++++++++++++++++
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdTrackingCloseVote.java |   15 +
 SdkProject/gradle.properties                                                                   |    2 
 Channel/Android/mlgtgame_quickhw/debug/libs/library-debug-mlgtgame_quickhw.aar                 |    0 
 SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/GoToReview.java           |   16 +
 30 files changed, 736 insertions(+), 62 deletions(-)

diff --git a/Channel/Android/mlgtgame_quickhw/AndroidManifest.xml b/Channel/Android/mlgtgame_quickhw/AndroidManifest.xml
new file mode 100644
index 0000000..1dad128
--- /dev/null
+++ b/Channel/Android/mlgtgame_quickhw/AndroidManifest.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.unity3d.player"
+    xmlns:tools="http://schemas.android.com/tools">
+    <application
+	android:allowNativeHeapPointerTagging="false">
+        <activity android:name="com.secondworld.sdk.GameActivity"
+                  android:theme="@style/UnityThemeSelector">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
+        </activity>
+    </application>
+</manifest>
diff --git a/Channel/Android/mlgtgame_quickhw/debug/libs/library-debug-mlgtgame_quickhw.aar b/Channel/Android/mlgtgame_quickhw/debug/libs/library-debug-mlgtgame_quickhw.aar
new file mode 100644
index 0000000..75f4afe
--- /dev/null
+++ b/Channel/Android/mlgtgame_quickhw/debug/libs/library-debug-mlgtgame_quickhw.aar
Binary files differ
diff --git a/Channel/Android/mlgtgame_quickhw/deps.gradle b/Channel/Android/mlgtgame_quickhw/deps.gradle
new file mode 100644
index 0000000..2e3ca6a
--- /dev/null
+++ b/Channel/Android/mlgtgame_quickhw/deps.gradle
@@ -0,0 +1,3 @@
+dependencies {
+
+}
diff --git a/Channel/Android/mlgtgame_quickhw/release/libs/library-release-mlgtgame_quickhw.aar b/Channel/Android/mlgtgame_quickhw/release/libs/library-release-mlgtgame_quickhw.aar
new file mode 100644
index 0000000..d5ae54e
--- /dev/null
+++ b/Channel/Android/mlgtgame_quickhw/release/libs/library-release-mlgtgame_quickhw.aar
Binary files differ
diff --git a/SdkProject/channel/mlgtgame_quickhw/AndroidManifest.xml b/SdkProject/channel/mlgtgame_quickhw/AndroidManifest.xml
new file mode 100644
index 0000000..53110e5
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/AndroidManifest.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    package="com.secondworld.sdk">
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <!--    GooglePay-->
+    <uses-permission android:name="com.android.vending.BILLING" />
+
+    <application
+
+        android:name=".GTGameApp"
+        android:requestLegacyExternalStorage="true"
+        android:usesCleartextTraffic="true"
+        android:supportsPictureInPicture= "true"
+        android:resizeableActivity="true"
+        android:exported="false"
+        android:extractNativeLibs="true"
+        tools:replace="android:name">
+
+        <provider
+            android:name="androidx.core.content.FileProvider"
+            android:authorities="${applicationId}.fileprovider"
+            android:exported="false"
+            android:grantUriPermissions="true">
+            <meta-data
+                android:name="android.support.FILE_PROVIDER_PATHS"
+                android:resource="@xml/filepaths" />
+
+        </provider>
+        <!--閰嶇疆娓犻亾id锛岄渶瑕佷负瀛楃涓�-->
+        <meta-data
+            android:name="channelId"
+            android:value="c1" />
+        <meta-data
+            android:name="showLoginLogo"
+            android:value="true"/>
+        <meta-data
+            android:name="noFloatViewBinding"
+            android:value="1" />
+        <!--Google鐧诲綍閰嶇疆锛屾病鏈塆oogle鐧诲綍鍙互涓嶅姞 -->
+        <meta-data
+            android:name="google-signin-client_id"
+            android:value="296267075349-7898e06jukoa756gb1kas6njfjir3os6.apps.googleusercontent.com"/>
+
+        <activity
+            android:name="com.facebook.FacebookActivity"
+            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" />
+        <activity android:name="com.facebook.CustomTabMainActivity" />
+        <activity
+            android:name="com.facebook.CustomTabActivity"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+                <data android:scheme="@string/fb_login_protocol_scheme" />
+            </intent-filter>
+        </activity>
+        <meta-data
+            android:name="com.facebook.sdk.ApplicationId"
+            android:value="@string/facebook_app_id" />
+        <!-- facebook v13.0.0寮�濮嬪鍔犵殑鍙傛暟 -->
+        <meta-data
+            android:name="com.facebook.sdk.ClientToken"
+            android:value="@string/facebook_client_token"/>
+        <!-- 蹇呮帴 end-->
+        <!-- 閫夋帴 begin-->
+        <!-- 姝ctivity鏄痜acebook鍒嗕韩闇�瑕佺敤鍒帮紝濡傛灉涓嶉渶瑕乫acebook鍒嗕韩鍙互涓嶅啓 -->
+        <activity
+            android:name="com.quickgame.android.sdk.activity.FacebookShareActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:theme="@style/hw_activityDialog" />
+        <!-- 姝rovider鏄痜acebook鍥剧墖鍒嗕韩闇�瑕佺敤鍒帮紝濡傛灉涓嶉渶瑕乫acebook鍒嗕韩鍙互涓嶅啓 -->
+        <!-- 灏�<鍔犱笂fbappid>鏇挎崲涓鸿嚜宸辩殑fb appid -->
+        <provider
+            android:name="com.facebook.FacebookContentProvider"
+            android:authorities="com.facebook.app.FacebookContentProvider711531044285658"
+            android:exported="true" />
+        <!-- 閫夋帴 end-->
+    </application>
+
+</manifest>
\ No newline at end of file
diff --git a/SdkProject/channel/mlgtgame_quickhw/assets/QHinfo b/SdkProject/channel/mlgtgame_quickhw/assets/QHinfo
new file mode 100644
index 0000000..958b8d9
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/assets/QHinfo
@@ -0,0 +1 @@
+https://hwsdk.happilygame.com
\ No newline at end of file
diff --git a/SdkProject/channel/mlgtgame_quickhw/config.properties b/SdkProject/channel/mlgtgame_quickhw/config.properties
new file mode 100644
index 0000000..22ff451
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/config.properties
@@ -0,0 +1 @@
+PLUGINS=
\ No newline at end of file
diff --git a/SdkProject/channel/mlgtgame_quickhw/deps.gradle b/SdkProject/channel/mlgtgame_quickhw/deps.gradle
new file mode 100644
index 0000000..2e3ca6a
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/deps.gradle
@@ -0,0 +1,3 @@
+dependencies {
+
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGameApp.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGameApp.java
new file mode 100644
index 0000000..9c71e51
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGameApp.java
@@ -0,0 +1,25 @@
+package com.secondworld.sdk;
+import android.app.Application;
+
+
+
+
+public class GTGameApp extends Application {
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        GameAppProxy.create(this,new GTGamePlatform());
+        registerProxy();
+    }
+
+    protected void registerProxy() {
+        //涓荤晫闈唬鐞嗘敞鍐�
+        GameActivity.registerProxy(GTGameMain.class);
+
+    }
+
+
+
+
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGameMain.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGameMain.java
new file mode 100644
index 0000000..06d5499
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGameMain.java
@@ -0,0 +1,59 @@
+package com.secondworld.sdk;
+
+import android.app.Activity;
+import android.content.Intent;
+
+import androidx.annotation.NonNull;
+
+public class GTGameMain extends GameActivityProxy {
+
+    @Override
+    public void onCreate(Activity activity) {
+        super.onCreate(activity);
+        // 鍒濆鍖朣DK
+        MySdkMgr.I.OnCreate(activity);
+    }
+
+    @Override
+    public void onStart()
+    {
+        super.onStart();
+        MySdkMgr.I.onStart();
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        MySdkMgr.I.onResume();
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        MySdkMgr.I.onPause();
+    }
+
+    @Override
+    public void onStop() {
+        super.onPause();
+        MySdkMgr.I.onStop();
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        MySdkMgr.I.onDestroy();
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        MySdkMgr.I.onActivityResult(requestCode, resultCode, data);
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+        MySdkMgr.I.onRequestPermissionsResult(requestCode, permissions, grantResults);
+    }
+
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGamePlatform.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGamePlatform.java
new file mode 100644
index 0000000..bd2f8ca
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGamePlatform.java
@@ -0,0 +1,9 @@
+package com.secondworld.sdk;
+
+public class GTGamePlatform extends PlatformDiff {
+
+    @Override
+    public String platformName() {
+        return "mlgtgame";
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/MySdkMgr.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/MySdkMgr.java
new file mode 100644
index 0000000..010ef3f
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/MySdkMgr.java
@@ -0,0 +1,236 @@
+package com.secondworld.sdk;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+
+import com.quickgame.android.sdk.QuickGameManager;
+import com.quickgame.android.sdk.QuickGameManager.QGPaymentCallback;
+import com.quickgame.android.sdk.QuickGameManager.SDKCallback;
+import com.quickgame.android.sdk.bean.QGOrderInfo;
+import com.quickgame.android.sdk.bean.QGRoleInfo;
+import com.quickgame.android.sdk.bean.QGUserData;
+import com.quickgame.android.sdk.model.QGUserHolder;
+import com.secondworld.sdk.utils.CodeA2U;
+import com.secondworld.sdk.utils.LogUtil;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public class MySdkMgr extends PlatformSdkMgr {
+    private static final String TAG = MySdkMgr.class.getSimpleName();
+    public static MySdkMgr I = new MySdkMgr();
+    QuickGameManager sdkInstance;
+
+    public void init(Activity activity) {
+        sdkInitState = SdkInitState.LOADING;
+        SampleSDKCallback sdkCallback = new SampleSDKCallback();
+        sdkInstance.init(activity, "28593039166907658241154673876478", sdkCallback);
+    }
+
+    public void OnCreate(Activity activity) {
+        //sdk init
+
+        sdkInstance = QuickGameManager.getInstance();
+        // init by your product code
+        init(activity);
+        sdkInstance.onCreate(activity);
+    }
+
+    public void onStart()
+    {
+        sdkInstance.onStart(GTGameMain.I.activity);
+    }
+
+    public void login() {
+
+        switch (sdkInitState) {
+            case FAILED:
+            case UNKNOWN: {
+                break;
+            }
+            case SUCCEED: {
+                sdkInstance.login(GTGameMain.I.activity);
+                break;
+            }
+            case LOADING: {
+                Toast.makeText(GameAppProxy.app, "Initializing", Toast.LENGTH_LONG).show();
+                break;
+            }
+        }
+    }
+
+    public void SetRoleDate(String roleID, String roleName, String level, String serverID, String serverName, String vipLevel) {
+        //涓婃姤瑙掕壊淇℃伅
+        QGRoleInfo roleInfo = new QGRoleInfo();
+        roleInfo.setRoleId(roleID);
+        roleInfo.setRoleName(roleName);
+        roleInfo.setRoleLevel(level);
+        roleInfo.setServerId(serverID);
+        roleInfo.setServerName(serverName);
+        roleInfo.setVipLevel(vipLevel);
+        sdkInstance.submitRoleInfo(roleInfo);
+    }
+
+    public void LogOutInitialize() {
+        sdkInstance.logout(GameActivityProxy.I.activity);
+
+    }
+
+
+    public void pay(String roleID, String money, String serverID, String productID, String productName,
+                    String cpOrderID, String Extra, QGRoleInfo roleInfo) {
+
+        LogUtil.i(TAG, "璋冭捣鍏呭��:roleID-" + roleID +
+                " money-" + money +
+                " serverID-" + serverID +
+                " productID-" + productID +
+                " productName-" + productName +
+                " Extra-" + Extra);
+        SamplePaymentCallback paymentCallback = new SamplePaymentCallback();
+
+        QGOrderInfo orderInfo = new QGOrderInfo();
+        orderInfo.setOrderSubject(productName);
+        orderInfo.setProductOrderId(cpOrderID);
+        orderInfo.setAmount(Double.parseDouble(money));
+        orderInfo.setSuggestCurrency("CNY");
+        orderInfo.setGoodsId(productID);
+        orderInfo.setExtrasParams(Extra);
+
+        sdkInstance.pay(GTGameMain.I.activity, orderInfo, roleInfo, paymentCallback);
+
+    }
+
+
+    /**
+     * sdk login callback
+     */
+    private class SampleSDKCallback implements SDKCallback {
+
+        @Override
+        public void onLoginFinished(QGUserData userData, QGUserHolder loginState) {
+            if (loginState.getStateCode() == QGUserHolder.LOGIN_SUCCESS) {
+                //show float view
+                sdkInstance.showFloatView(GameActivityProxy.I.activity);
+                try
+                {
+                    args.clear();
+                    JSONObject info = new JSONObject();
+                    String channelID = sdkInstance.getChannelId();
+                    if (channelID == null || channelID.isEmpty())
+                        channelID = "9997";
+                    String account = userData.getUid() + "@" + channelID;
+                    info.put("account", account);
+                    info.put("userName", userData.getUid());
+                    info.put("token", userData.getToken());
+                    args.put("info", info);
+                    UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginOk, args);
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                    LogUtil.e("SdkManager 鐧诲綍鎴愬姛 浣嗕俊鎭鐞嗗け璐�", e);
+                }
+
+                LogUtil.i(TAG, "login success,uid:" + userData.getUid() + " displayUid>:" + userData.getdisplayUid());
+
+            } else {
+                Toast.makeText(GameAppProxy.app, "login fail", Toast.LENGTH_LONG).show();
+                //鐧诲綍澶辫触
+                LogUtil.e("SdkManager", "鐧诲綍澶辫触锛�");
+                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLoginFail);
+            }
+
+        }
+
+        @Override
+        public void onInitFinished(boolean isSuccess,String msg) {
+            if (isSuccess) {
+                LogUtil.i(TAG, "channelId:" + sdkInstance.getChannelId() + "init success->");
+                sdkInitState = SdkInitState.SUCCEED;
+                LogUtil.debug("SdkManager", "鍒濆鍖栨垚鍔�");
+                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformInitOk);
+            } else {
+                Toast.makeText(GameAppProxy.app,  "init fail "+msg, Toast.LENGTH_LONG).show();
+                //鍒濆鍖栧け璐�
+                sdkInitState = SdkInitState.FAILED;
+                LogUtil.e("SdkManager", "鍒濆鍖栧け璐� msg锛�" + msg);
+                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformInitFail);
+            }
+        }
+
+        @Override
+        public void onLogout() {
+            GameActivityProxy.I.activity.runOnUiThread(new Runnable() {
+
+                @Override
+                public void run() {
+                    //娉ㄩ攢鎴愬姛
+                    //娉ㄩ攢鎴愬姛,闇�瑕佹妸娓告垙鍒囨崲鍥炵櫥闄嗗墠鐨勫満鏅�,骞堕噸鏂板脊鍑虹櫥褰曟绛夋搷浣�
+                    UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformLogoutOk);
+                }
+            });
+        }
+
+        @Override
+        public void onGooglePlaySub(String goodsId, String sdkOrder, boolean isAutoRenewing, boolean isAcknowledged) {
+            LogUtil.i(TAG, "goodsId=" + goodsId + "&&sdkOrder=" + sdkOrder);
+        }
+    }
+
+    /**
+     * pay callback
+     */
+    private class SamplePaymentCallback implements QGPaymentCallback {
+
+        @Override
+        public void onPaySuccess(String orderId, String orderNo, String goodsId, String extraParams) {
+            LogUtil.i(TAG,"pay success");
+            //鏀粯鎴愬姛
+            //sdkOrderID:quick璁㈠崟鍙� cpOrderID锛氭父鎴忚鍗曞彿
+            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformPayOk);
+        }
+
+        @Override
+        public void onPayFailed(String orderId, String orderNo, String errorMessage) {
+            LogUtil.i(TAG, "pay fail:" + errorMessage);
+            //鏀粯澶辫触
+            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformPayFail);
+        }
+
+        @Override
+        public void onPayCancel(String orderId, String orderNo, String errorMessage) {
+            LogUtil.i(TAG, "pay cancel");
+            //鏀粯鍙栨秷
+            UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformPayCancel);
+        }
+
+    }
+
+    public void onResume() {
+        sdkInstance.onResume(GTGameMain.I.activity);
+
+    }
+    public void onPause() {
+        sdkInstance.onPause(GTGameMain.I.activity);
+
+    }
+    public void onStop() {
+        sdkInstance.onStop(GTGameMain.I.activity);
+    }
+
+    public void onDestroy() {
+        //閫�鍑虹櫥褰曘�侀��鍑烘父鎴忚皟鐢�
+        sdkInstance.onDestroy(GTGameMain.I.activity);
+    }
+
+    public void onActivityResult(int requestCode, int resultCode, Intent data)
+    {
+        sdkInstance.onActivityResult(requestCode,resultCode,data);
+    }
+
+    public void onRequestPermissionsResult(int requestCode,
+                                           @NonNull String[] permissions, @NonNull int[] grantResults) {
+        sdkInstance.onRequestPermissionsResult(requestCode, permissions, grantResults);
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdCreateRole.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdCreateRole.java
new file mode 100644
index 0000000..b0be522
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdCreateRole.java
@@ -0,0 +1,25 @@
+package com.secondworld.sdk.command;
+
+import com.secondworld.sdk.MySdkMgr;
+import com.secondworld.sdk.utils.CodeU2A;
+
+import org.json.JSONObject;
+
+public class CmdCreateRole implements ICommand {
+    @Override
+    public int getCode() {
+        return CodeU2A.CreateRole;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+        MySdkMgr.I.SetRoleDate(
+                json.getString("roleID"),
+                json.getString("roleName"),
+                json.getString("level"),
+                json.getString("sid"),
+                json.getString("serverName"),
+                json.getString("vipLevel")
+        );
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdOpenDashboard.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdOpenDashboard.java
new file mode 100644
index 0000000..6e150ee
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdOpenDashboard.java
@@ -0,0 +1,17 @@
+package com.secondworld.sdk.command;
+
+import com.secondworld.sdk.utils.CodeU2A;
+
+
+import org.json.JSONObject;
+
+public class CmdOpenDashboard implements  ICommand{
+    @Override
+    public int getCode() {
+        return CodeU2A.OpenDashboard;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPayFinished.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPayFinished.java
new file mode 100644
index 0000000..5938411
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPayFinished.java
@@ -0,0 +1,16 @@
+package com.secondworld.sdk.command;
+
+import com.secondworld.sdk.utils.CodeU2A;
+
+import org.json.JSONObject;
+
+public class CmdPayFinished implements  ICommand{
+    @Override
+    public int getCode() {
+        return CodeU2A.PayFinished;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformInit.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformInit.java
new file mode 100644
index 0000000..08a64e1
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformInit.java
@@ -0,0 +1,17 @@
+package com.secondworld.sdk.command;
+
+import com.secondworld.sdk.utils.CodeU2A;
+
+import org.json.JSONObject;
+
+public class CmdPlatformInit implements ICommand {
+    @Override
+    public int getCode() {
+        return CodeU2A.PlatformInit;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformLogin.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformLogin.java
new file mode 100644
index 0000000..70343ca
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformLogin.java
@@ -0,0 +1,18 @@
+package com.secondworld.sdk.command;
+
+import com.secondworld.sdk.MySdkMgr;
+import com.secondworld.sdk.utils.CodeU2A;
+
+import org.json.JSONObject;
+
+public class CmdPlatformLogin implements ICommand {
+    @Override
+    public int getCode() {
+        return CodeU2A.PlatformLogin;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+        MySdkMgr.I.login();
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformLogout.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformLogout.java
new file mode 100644
index 0000000..14f23b8
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformLogout.java
@@ -0,0 +1,17 @@
+package com.secondworld.sdk.command;
+import com.secondworld.sdk.MySdkMgr;
+import com.secondworld.sdk.utils.CodeU2A;
+
+import org.json.JSONObject;
+
+public class CmdPlatformLogout implements ICommand {
+    @Override
+    public int getCode() {
+        return CodeU2A.PlatformLogout;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+        MySdkMgr.I.LogOutInitialize();
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformPay.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformPay.java
new file mode 100644
index 0000000..b639912
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformPay.java
@@ -0,0 +1,33 @@
+package com.secondworld.sdk.command;
+
+import com.quickgame.android.sdk.bean.QGRoleInfo;
+import com.secondworld.sdk.GameAppProxy;
+import com.secondworld.sdk.MySdkMgr;
+import com.secondworld.sdk.utils.CodeU2A;
+
+import org.json.JSONObject;
+
+public class CmdPlatformPay implements ICommand {
+    @Override
+    public int getCode() {
+        return CodeU2A.PlatformPay;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+        //channelID_cp璁㈠崟id_鍖烘湇id_娓告垙鍏呭�肩紪鍙�  闀垮害涓嶈秴杩�100 鍙兘鐢ㄤ笅鍒掔嚎
+
+        QGRoleInfo roleInfo = new QGRoleInfo();
+        roleInfo.setRoleId(json.getString("roleID"));
+        roleInfo.setRoleLevel(json.getString("level"));
+        roleInfo.setRoleName(json.getString("roleName"));
+        roleInfo.setServerName(json.getString("serverName"));
+        roleInfo.setServerId(json.getString("sid"));
+        roleInfo.setVipLevel(json.getString("vipLevel"));
+
+        String attach = "9998_" + json.getString("orderId") + "_" + json.getString("sid") + "_" + json.getString("cpInfo");
+        MySdkMgr.I.pay(json.getString("roleID"), json.getString("mount"),
+                json.getString("sid"), json.getString("cpInfo"),
+                json.getString("title"), json.getString("orderId"), attach, roleInfo);
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdRoleLevelUp.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdRoleLevelUp.java
new file mode 100644
index 0000000..8f0bbf6
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdRoleLevelUp.java
@@ -0,0 +1,26 @@
+package com.secondworld.sdk.command;
+
+
+import com.secondworld.sdk.MySdkMgr;
+import com.secondworld.sdk.utils.CodeU2A;
+
+import org.json.JSONObject;
+
+public class CmdRoleLevelUp implements ICommand {
+    @Override
+    public int getCode() {
+        return CodeU2A.RoleLevelUp;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+        MySdkMgr.I.SetRoleDate(
+                json.getString("roleID"),
+                json.getString("roleName"),
+                json.getString("level"),
+                json.getString("sid"),
+                json.getString("serverName"),
+                json.getString("vipLevel")
+        );
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdRoleLogin.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdRoleLogin.java
new file mode 100644
index 0000000..6c5f013
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdRoleLogin.java
@@ -0,0 +1,27 @@
+package com.secondworld.sdk.command;
+
+import com.secondworld.sdk.MySdkMgr;
+import com.secondworld.sdk.utils.CodeU2A;
+
+import org.json.JSONObject;
+
+public class CmdRoleLogin implements  ICommand{
+    @Override
+    public int getCode() {
+        return CodeU2A.RoleLogin;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+
+        MySdkMgr.I.SetRoleDate(
+                json.getString("roleID"),
+                json.getString("roleName"),
+                json.getString("level"),
+                json.getString("sid"),
+                json.getString("serverName"),
+                json.getString("vipLevel")
+        );
+
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdTrackingCloseVote.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdTrackingCloseVote.java
new file mode 100644
index 0000000..652d3af
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdTrackingCloseVote.java
@@ -0,0 +1,15 @@
+package com.secondworld.sdk.command;
+
+import com.secondworld.sdk.utils.CodeU2A;
+import org.json.JSONObject;
+
+public class CmdTrackingCloseVote implements  ICommand{
+    @Override
+    public int getCode() {
+        return CodeU2A.TrackingCloseVote;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdTutorialFinish.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdTutorialFinish.java
new file mode 100644
index 0000000..f31f103
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdTutorialFinish.java
@@ -0,0 +1,15 @@
+package com.secondworld.sdk.command;
+
+import com.secondworld.sdk.utils.CodeU2A;
+import org.json.JSONObject;
+
+public class CmdTutorialFinish implements  ICommand{
+    @Override
+    public int getCode() {
+        return CodeU2A.TutorialFinish;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/GoToReview.java b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/GoToReview.java
new file mode 100644
index 0000000..17d2cb0
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/GoToReview.java
@@ -0,0 +1,16 @@
+package com.secondworld.sdk.command;
+
+
+import com.secondworld.sdk.utils.CodeU2A;
+import org.json.JSONObject;
+
+public class GoToReview implements ICommand {
+    @Override
+    public int getCode() {
+        return CodeU2A.GoToReview;
+    }
+
+    @Override
+    public void process(JSONObject json) throws Exception {
+    }
+}
diff --git a/SdkProject/channel/mlgtgame_quickhw/res/values/strings.xml b/SdkProject/channel/mlgtgame_quickhw/res/values/strings.xml
new file mode 100644
index 0000000..f52188f
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/res/values/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="MissingTranslation">
+    <string name="facebook_app_id">711531044285658</string>
+    <string name="fb_login_protocol_scheme">fb711531044285658</string>
+    <string name="facebook_client_token">3ddd4630ea77fdee4b3e3e0fe79e9fdd</string>
+</resources>
\ No newline at end of file
diff --git a/SdkProject/channel/mlgtgame_quickhw/res/xml/filepaths.xml b/SdkProject/channel/mlgtgame_quickhw/res/xml/filepaths.xml
new file mode 100644
index 0000000..9b7bb13
--- /dev/null
+++ b/SdkProject/channel/mlgtgame_quickhw/res/xml/filepaths.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <paths>
+        <root-path path="." name="root_path"/>
+       <!-- <external-path name="external_storage_root" path="." />
+        <external-path name="external_storage_download" path="." />
+        <external-cache-path name="external_cache_path" path="." />
+        <external-files-path name="external_files_path" path="." />
+        <external-path name="external_path" path=". " />
+        <cache-path name="cache_path" path="." />
+        <files-path name="files_path" path="." />-->
+    </paths>
+</resources>
\ No newline at end of file
diff --git a/SdkProject/gradle.properties b/SdkProject/gradle.properties
index 7670693..e25f2cb 100644
--- a/SdkProject/gradle.properties
+++ b/SdkProject/gradle.properties
@@ -18,4 +18,4 @@
 ## Automatically convert third-party libraries to use AndroidX
 android.enableJetifier=true
 #褰撳墠鏋勫缓鐨勬笭閬撳悕绉�
-CHANNEL_NAME=mlgtgame
\ No newline at end of file
+CHANNEL_NAME=mlgtgame_quickhw
\ No newline at end of file
diff --git a/SdkProject/library/build.gradle b/SdkProject/library/build.gradle
index 797fa5f..3dea87f 100644
--- a/SdkProject/library/build.gradle
+++ b/SdkProject/library/build.gradle
@@ -203,24 +203,30 @@
         force = true
     }
 
-    //sdk鎵�闇�渚濊禆
-    implementation 'androidx.recyclerview:recyclerview:1.0.0'
-    implementation 'com.squareup.okhttp3:logging-interceptor:3.12.0'
-    //firebase
-    implementation(platform("com.google.firebase:firebase-bom:32.2.2"))
-    implementation 'com.google.firebase:firebase-analytics'
-    implementation 'com.google.firebase:firebase-auth'
-    // google
-    implementation 'com.google.android.gms:play-services-auth:20.6.0'
-    // facebook
-    implementation 'com.facebook.android:facebook-login:16.2.0'
-    implementation 'androidx.activity:activity-compose:1.3.1'
-    // google 鏀粯
-    implementation 'com.android.billingclient:billing:6.0.1'
-    implementation 'androidx.fragment:fragment:1.3.2'
-    // adjust 锛圴1.0.2鏂板锛�
-    implementation 'com.adjust.sdk:adjust-android:4.33.5'
-    implementation 'com.android.installreferrer:installreferrer:2.2'
-    implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'
-    implementation 'com.google.android.gms:play-services-appset:16.0.2'
+//浠ヤ笅涓哄繀闇�渚濊禆鐨勫簱
+    implementation(name: 'quickgame_hw_2.3.3', ext: 'aar') //x.x.x涓哄叿浣撶増鏈�
+    implementation 'com.android.billingclient:billing:5.2.1'//google鍐呰喘
+    implementation 'androidx.appcompat:appcompat:1.1.0'
+    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.4.10"
+//浠ヤ笅涓洪�夋帴搴�
+//璋锋瓕鐧诲綍
+    implementation 'com.google.android.gms:play-services-auth:19.0.0'
+//Facebook
+    implementation 'com.facebook.android:facebook-android-sdk:16.0.0'
+//appsflyer
+//    implementation 'com.appsflyer:af-android-sdk:6.10.3'
+////adjust
+//    implementation 'com.adjust.sdk:adjust-android:4.31.1'
+////adjust闇�瑕�
+//    implementation 'com.google.android.gms:play-services-ads-identifier:17.0.1'
+////appsflyer銆乤djust闇�瑕�
+//    implementation 'com.android.installreferrer:installreferrer:2.2'
+////Twitter鐧诲綍
+//    implementation 'com.twitter.sdk.android:twitter:3.1.1'
+////Line鐧诲綍
+//    implementation (name: 'line_sdk_4.0.8',ext: 'aar')
+////tapdb
+//    implementation files('libs/libTapDB-3.3.0.aar')
+////TalkingData
+//    implementation files('libs/TalkingData_GP_GameAnalytics_V4.0.69.jar')
 }
diff --git a/SdkProject/library/google-services.json b/SdkProject/library/google-services.json
index 38f87fa..8cba496 100644
--- a/SdkProject/library/google-services.json
+++ b/SdkProject/library/google-services.json
@@ -1,60 +1,26 @@
 {
   "project_info": {
-    "project_number": "966789831936",
-    "project_id": "djmx-android",
-    "storage_bucket": "djmx-android.appspot.com"
+    "project_number": "732138931273",
+    "project_id": "djmx666-b7853",
+    "storage_bucket": "djmx666-b7853.appspot.com"
   },
   "client": [
     {
       "client_info": {
-        "mobilesdk_app_id": "1:966789831936:android:f381abd6b3cbbf70ff67e5",
+        "mobilesdk_app_id": "1:732138931273:android:739ec3eaddfaaf4a73eb98",
         "android_client_info": {
           "package_name": "com.secondworld.sdk"
         }
       },
-      "oauth_client": [
-        {
-          "client_id": "966789831936-7kvc289ui991rool953ms9btb7dcihuv.apps.googleusercontent.com",
-          "client_type": 1,
-          "android_info": {
-            "package_name": "com.secondworld.sdk",
-            "certificate_hash": "182d414a78abee730625ac28dc5354e71e3cf27f"
-          }
-        },
-        {
-          "client_id": "966789831936-8brse3va05r8vons4809mr1nqdf7kkcs.apps.googleusercontent.com",
-          "client_type": 1,
-          "android_info": {
-            "package_name": "com.secondworld.sdk",
-            "certificate_hash": "0c2693d70e106a479c2a6608f7249d81a948576f"
-          }
-        },
-        {
-          "client_id": "966789831936-oq3boodul1do38e3p91a8on3bi9ob6tb.apps.googleusercontent.com",
-          "client_type": 1,
-          "android_info": {
-            "package_name": "com.secondworld.sdk",
-            "certificate_hash": "fe6b04b8caab520c5bb652a0fe27e54c1497de7f"
-          }
-        },
-        {
-          "client_id": "966789831936-h1aps8f3s0v6rgbdu4lt2h74933m7661.apps.googleusercontent.com",
-          "client_type": 3
-        }
-      ],
+      "oauth_client": [],
       "api_key": [
         {
-          "current_key": "AIzaSyCKWCtHXjIkHtnnKcoua1yf-YXxXmrXla8"
+          "current_key": "AIzaSyBg1OT3J7ClBNviEYrL3S6gXkWIUNvjYjs"
         }
       ],
       "services": {
         "appinvite_service": {
-          "other_platform_oauth_client": [
-            {
-              "client_id": "966789831936-h1aps8f3s0v6rgbdu4lt2h74933m7661.apps.googleusercontent.com",
-              "client_type": 3
-            }
-          ]
+          "other_platform_oauth_client": []
         }
       }
     }
diff --git a/SdkProject/library/libs/quickgame_hw_2.3.3.aar b/SdkProject/library/libs/quickgame_hw_2.3.3.aar
new file mode 100644
index 0000000..da45774
--- /dev/null
+++ b/SdkProject/library/libs/quickgame_hw_2.3.3.aar
Binary files differ

--
Gitblit v1.8.0