本文介绍了在Android Studio环境下配置Miracle Games Android SDK。
开始之前需下载SDK,以及Demo。【下载】
将mg_android_sdk_library_*.*.*.aar文件拷贝到游戏工程的libs目录下,并修改游戏Module的build.gradle文件,添加repositories域:(如果已经存在了repositories域,可添加到已存在的域中即可)
repositories { flatDir { dirs 'libs' } }
implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:support-v4:26.1.0' implementation 'com.android.support:appcompat-v7:26.1.0' compile(name:'mg_android_sdk_1.3.8.0', ext:'aar') //MG_SDK工程资源包 implementation 'com.squareup.okhttp3:okhttp:3.12.12' //QQ登录网络请求所需 api 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.3.1' //微信登录所需依赖 implementation 'com.facebook.android:facebook-android-sdk:[4,5)' //Facebook登录所需依赖 implementation 'com.google.android.gms:play-services-auth:12.0.1' //Google登录所需依赖
在 Android11 及以上系统中,需要申请"查询已安装App"的权限,否则无法打开微信支付
在<application></application>里面加入Activity声明:(注:除MG SDK主工程声明配置以外其他第三方登录配置均为可选配置,游戏可根据当前项目需求进行选择配置)
<!-- 在 Android11 及以上系统中申请权限,否则无法打开微信支付 --> <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name"> <!-- MG用户中心所需activity --> <activity android:name="com.mg.usercentersdk.widget.WrapperActivity" android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode" android:excludeFromRecents="true" android:hardwareAccelerated="false" android:launchMode="standard" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden|adjustResize" > </activity> <!-- MG用户中心AppKey --> <meta-data android:name="AppKey" android:value="28F92A14A7" > </meta-data> <!-- MG用户中心渠道号 --> <meta-data android:name="ChannelID" android:value="mg" > <!--不同渠道出包配置--> </meta-data> <!-- 微信登录 所需配置,可根据项目需求选择配置 --> <activity android:name="com.mg.game.jqyct.wxapi.WXEntryActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:exported="true" android:launchMode="singleTop"> </activity> <!-- 微信登录所需参数 --> <meta-data android:name="wx_appid" android:value="wx1ef681931f302080" > </meta-data> <meta-data android:name="wx_secret" android:value="720489607754132afb1481df767f5009" > </meta-data> <!-- QQ登录 所需配置,可根据项目需求选择配置--> <activity android:name="com.tencent.tauth.AuthActivity" android:configChanges="orientation|keyboardHidden" android:noHistory="true" android:launchMode="singleTask" > <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="tencent101946544" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="behind" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <meta-data android:name="qq_appid" android:value="tencent101946544" > </meta-data> <!-- Facebook 所需Activity,可根据项目需求选择配置--> <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> <activity android:name="com.facebook.FacebookActivity" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /> <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> <!-- Google登录 所需配置,可根据项目需求选择配置--> <!-- Google 客户端ID --> <meta-data android:name="SERVER_CLIENT_ID" android:value="545888706329-mtpbbnjn1h8uaeb3lt3hgcot5f118jce.apps.googleusercontent.com" > </meta-data> </application>
如游戏需要微信登录功能,需在你的包名相应目录下新建一个 wxapi 目录,并复制Demo工程下WXEntryActivity类到该目录。(例如应用程序的包名为 com.mg.game.jqyct,则新添加的类如下图所示)
提示:在游戏各个Activity生命周期中调用SDK生命周期接口。
public void onStart() { super.onStart(); MGSdkPlatform.getInstance().onStart(); } public void onResume() { MGSdkPlatform.getInstance().onResume(); } public void onPause() { super.onPause(); MGSdkPlatform.getInstance().onPause(); } public void onStop() { super.onStop(); MGSdkPlatform.getInstance().onStop(); } public void onRestart() { super.onRestart(); MGSdkPlatform.getInstance().onRestart(); } public void onDestroy() { super.onDestroy(); MGSdkPlatform.getInstance().onDestroy(); } public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); MGSdkPlatform.getInstance().onActivityResult(requestCode, resultCode, data); }