hch
2023-12-11 7df1cbcf31b128bdc6785cee6899e64ba879f241
0312 quick 海外
3个文件已修改
27个文件已添加
798 ■■■■■ 已修改文件
Channel/Android/mlgtgame_quickhw/AndroidManifest.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/mlgtgame_quickhw/debug/libs/library-debug-mlgtgame_quickhw.aar 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/mlgtgame_quickhw/deps.gradle 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/mlgtgame_quickhw/release/libs/library-release-mlgtgame_quickhw.aar 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/AndroidManifest.xml 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/assets/QHinfo 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/config.properties 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/deps.gradle 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGameApp.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGameMain.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGamePlatform.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/MySdkMgr.java 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdCreateRole.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdOpenDashboard.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPayFinished.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformInit.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformLogin.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformLogout.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformPay.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdRoleLevelUp.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdRoleLogin.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdTrackingCloseVote.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdTutorialFinish.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/GoToReview.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/res/values/strings.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/mlgtgame_quickhw/res/xml/filepaths.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/gradle.properties 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/build.gradle 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/google-services.json 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/libs/quickgame_hw_2.3.3.aar 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/mlgtgame_quickhw/AndroidManifest.xml
New file
@@ -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>
Channel/Android/mlgtgame_quickhw/debug/libs/library-debug-mlgtgame_quickhw.aar
Binary files differ
Channel/Android/mlgtgame_quickhw/deps.gradle
New file
@@ -0,0 +1,3 @@
dependencies {
}
Channel/Android/mlgtgame_quickhw/release/libs/library-release-mlgtgame_quickhw.aar
Binary files differ
SdkProject/channel/mlgtgame_quickhw/AndroidManifest.xml
New file
@@ -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登录配置,没有Google登录可以不加 -->
        <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-->
        <!-- 此activity是facebook分享需要用到,如果不需要facebook分享可以不写 -->
        <activity
            android:name="com.quickgame.android.sdk.activity.FacebookShareActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:theme="@style/hw_activityDialog" />
        <!-- 此provider是facebook图片分享需要用到,如果不需要facebook分享可以不写 -->
        <!-- 将<加上fbappid>替换为自己的fb appid -->
        <provider
            android:name="com.facebook.FacebookContentProvider"
            android:authorities="com.facebook.app.FacebookContentProvider711531044285658"
            android:exported="true" />
        <!-- 选接 end-->
    </application>
</manifest>
SdkProject/channel/mlgtgame_quickhw/assets/QHinfo
New file
@@ -0,0 +1 @@
https://hwsdk.happilygame.com
SdkProject/channel/mlgtgame_quickhw/config.properties
New file
@@ -0,0 +1 @@
PLUGINS=
SdkProject/channel/mlgtgame_quickhw/deps.gradle
New file
@@ -0,0 +1,3 @@
dependencies {
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGameApp.java
New file
@@ -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);
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGameMain.java
New file
@@ -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);
        // 初始化SDK
        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);
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/GTGamePlatform.java
New file
@@ -0,0 +1,9 @@
package com.secondworld.sdk;
public class GTGamePlatform extends PlatformDiff {
    @Override
    public String platformName() {
        return "mlgtgame";
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/MySdkMgr.java
New file
@@ -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);
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdCreateRole.java
New file
@@ -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")
        );
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdOpenDashboard.java
New file
@@ -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 {
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPayFinished.java
New file
@@ -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 {
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformInit.java
New file
@@ -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 {
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformLogin.java
New file
@@ -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();
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformLogout.java
New file
@@ -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();
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdPlatformPay.java
New file
@@ -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);
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdRoleLevelUp.java
New file
@@ -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")
        );
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdRoleLogin.java
New file
@@ -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")
        );
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdTrackingCloseVote.java
New file
@@ -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 {
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/CmdTutorialFinish.java
New file
@@ -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 {
    }
}
SdkProject/channel/mlgtgame_quickhw/java/com/secondworld/sdk/command/GoToReview.java
New file
@@ -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 {
    }
}
SdkProject/channel/mlgtgame_quickhw/res/values/strings.xml
New file
@@ -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>
SdkProject/channel/mlgtgame_quickhw/res/xml/filepaths.xml
New file
@@ -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>
SdkProject/gradle.properties
@@ -18,4 +18,4 @@
## Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
#当前构建的渠道名称
CHANNEL_NAME=mlgtgame
CHANNEL_NAME=mlgtgame_quickhw
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 (V1.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、adjust需要
//    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')
}
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": []
        }
      }
    }
SdkProject/library/libs/quickgame_hw_2.3.3.aar
Binary files differ