# 1 接入准备
这一步骤主要介绍快速将SDK资源集成到游戏工程,以编译打包正常为完成标志。
除核心库以外,其余模块均属于可选依赖,按需引入即可。
下一步将介绍具体业务功能的集成。
# 1.1 准备环境
- 下载 SDK资源
- 接入准备:
-  - ThirdExtraKey.AF_DEV_KEY,即 devKey
 
-  - ThirdExtraKey.FB_APP_ID,即 appId
 
- Firebase (opens new window) 的 google-services.json 文件 
- Adjust (opens new window) 的 appToken - ThirdExtraKey.ADJ_APP_TOKEN
- ThirdExtraKey.ADJ_CHARGE_EVENT_TOKEN: 支付时使用
 
- AppMetrica (opens new window) 的 API key (for SDK) - ThirdExtraKey.APPMETRICA_API_KEY
 
- 当前三方库版本 - AppsFlyer 
 SDK版本- AdJust 
 SDK版本- Facebook 
 SDK版本- Firebase 
 SDK版本- AppMetrica 
 SDK版本- v6.16.2 
 (官网地址 (opens new window))- v5.0.2 
 (官网地址 (opens new window))- v17.0.2 
 (官网地址 (opens new window))- firebase-bom:33.16.0 
 (官网地址 (opens new window))- v5.3.0 
 (官网地址 (opens new window))
 
-  
# 2 集成
# 2.1 SDK导入
- SDK现仅适用于- Android Studio开发。
- 将压缩包解压,解压后将 - marketsdk.aar复制到项目- moudle(通常是app目录)的- libs下。
# 2.2 配置
所有的配置,可参考获取到的SDK版本中的demo工程。
# 2.2.1 AndroidManifest.xml配置
 说明:
1. 请根据实际用到的 市场模块 配置
- 权限配置 - appsflyer: - <!-- appsflyer --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />1
 2
 3
 4
- facebook: - <!-- facebook --> <uses-permission android:name="android.permission.INTERNET" />1
 2
- firebase: - <!-- firebase --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" />1
 2
 3
 4
- Adjust: - <!-- Adjust --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />1
 2
 3
 4
 
- 其它配置(在 - <application>...</application>内)- AppsFlyer配置 - <receiver android:name="com.appsflyer.MultipleInstallBroadcastReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver>1
 2
 3
 4
 5
 6
 7
- Facebook 配置 - 打开您的 - /app/res/values/strings.xml文件,添加名称为- facebook_app_id、- facebook_client_token的- string元素- <string name="facebook_app_id">1234</string> <string name="facebook_client_token">56789</string>1
 2
- 打开 - /app/manifest/AndroidManifest.xml文件, 将- meta-data元素添加到应用编号和客户端口令的- application元素中:- <application android:label="@string/app_name" ...> ... <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> <meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/> ... </application>1
 2
 3
 4
 5
 6
 7
 8
- 客户端口令(facebook_client_token)获取位置: - 在facebook控制台面板中,依次前往设置 > 高级设置 > 安全 > 客户端口令
 
- Adjust配置 - <receiver android:name="com.adjust.sdk.AdjustReferrerReceiver" android:exported="true" > <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver>1
 2
 3
 4
 5
 6
 7
 
- Android Studio 混淆配置 - 若游戏在编译过程中开启了混淆机制,请务必添加以下字段到混淆文件 - proguard-rules.pro中- -keep class com.hero.market.** { *; } -keep class com.ultra.market.** { *; } -keep class com.hero.global.** { *; } -keep class com.ultrasdk.global.** { *; } -keep class com.appsflyer.** { *; } -keep class com.facebook.** { *; } -keep class com.google.** { *; } -keep class com.android.** { *; } -keep class com.hu.plugin.** { *; } -keep class com.adjust.sdk.**{ *; } -keep class com.google.android.gms.common.ConnectionResult { int SUCCESS; } -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient { com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context); } -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info { java.lang.String getId(); boolean isLimitAdTrackingEnabled(); } -keep public class com.android.installreferrer.**{ *; } -keep class com.appsflyer.** { *; } -keep class kotlin.jvm.internal.** { *; } -dontwarn com.android.installreferrer1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
# 2.2.2 编译脚本配置(build.gradle)
 - Firebase配置 - 将在 - google后台下载的- google-services.json文件复制到项目根目录下
- 向您的根级 - build.gradle文件添加规则:- buildscript { repositories { google() mavenCentral() } } dependencies { classpath 'com.google.gms:google-services:4.3.15' } allprojects { repositories { mavenCentral() google() } }1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
- 若您需要使用 - Firebase Crashlytics模块,用于收集崩溃报告,那您需要向您根级- build.gradle文件添加规则:- buildscript { repositories { google() mavenCentral() } } dependencies { classpath 'com.google.gms:google-services:4.3.15' //新增Crashlytics插件 //使用Crashlytics模块的前提条件是先配置firabse相关的其他配置(基础),否则Crashlytics模块可能不生效,或者会报错 classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9' } allprojects { repositories { mavenCentral() google() } }1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 
# 2.2.3 库引用配置(build.gradle)
 - 在您的模块 - Gradle文件(通常是- app/build.gradle)中,添加规则:- apply plugin: 'com.android.application' dependencies { <!-- 核心库 必须依赖--start> implementation 'com.android.installreferrer:installreferrer:2.2' implementation files('libs/marketsdk.aar') <!-- 核心库 必须依赖--end> <!-- appsflyer 未使用则不依赖--> implementation 'com.appsflyer:af-android-sdk:6.15.2' <!-- facebook 未使用则不依赖--> implementation 'com.facebook.android:facebook-android-sdk:17.0.2' <!-- firebase 未使用则不依赖--> implementation platform('com.google.firebase:firebase-bom:33.7.0') implementation 'com.google.firebase:firebase-analytics' <!-- 若您需要使用 `Firebase Crashlytics` 模块,用于收集崩溃报告 ,添加以下库引用--> implementation("com.google.firebase:firebase-crashlytics") <!-- adjust 未使用则不依赖--> implementation 'com.adjust.sdk:adjust-android:5.0.2' <!-- AppMetrica 未使用则不依赖--> implementation 'com.yandex.android:mobmetricalib:5.3.0' } // ADD THIS AT THE BOTTOM // firebase need to copy apply plugin: 'com.google.gms.google-services' <!-- 若您需要使用 `Firebase Crashlytics` 模块,用于收集崩溃报告 ,添加以下插件引用--> apply plugin: 'com.google.firebase.crashlytics'1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
三方库冲突解决方案
- 如果使用打包工具出全球渠道包,接入市场SDK时,为了 - 避免版本差异带来的- 库冲突,请务- 必保证SDK版本号与文档所示- 版本号一致。
- 接入市场SDK的时候,如果本身有引入相应SDK,请确保sdk版本号保持与市场SDK引入的三方库版本一致即可,无须重复依赖