本文介绍了在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);
}