快速开始¶
获取SDK¶
- 获取SDK包,解压后,目录结构如下:
sdk
|
├── test
│ ├── 自测文档
| └── common-resource 角标\闪屏 etc
├── docs
│ ├── pdf
│ └── html
├── demo
│ ├── android_studio
| └── demo.apk
└── sdk
└── aar
├── yofunlibrary-xxxxxxxx.aar
└── channellibrary-xxxxx.aar
其中:
- test 下是SDK的测试用例、角标、闪屏等资源
- docs 下是SDK中文说明文档。
- demo 提供了SDK接入的示例程序。
- 适用于Android Studio开发接入, SDK提供了
aarMAVEN的两种形式的资源,详情见 引入依赖 章节。
角标与闪屏¶
角标资源在(以相关联系人提供的为准) 应用角标规范
test/common-resource/ic_launcher_cover
闪屏资源在 闪屏要求
R.layout.netease_yofun_splash_activity_layout
体验demo¶
SDK提供了demo工程,给接入SDK做了一个示例,为了更好接入,建议先导入demo项目,体验并查看demo中的接入示例。
- 使用 android studio 打开位于 sdk/demo/android_studio/HubDemo 的项目。
- 修改 app/build.gradle ,在 app_id 处替换成 网易Yofun 提供的游戏参数。
manifestPlaceholders = [
"app_id": "${这里替换为从网易Yofun获取的APP_ID}"
]
- 直接编译 运行即可。
- 如果出现报错, android studio: File -> settings -> Build,Execution,Deploy.. -> Gradle -> Gradle JDK,选中 ‘JDK11’ or ‘JDK8’。
Step by step的接入说明¶
1. 设置minSdkVersion/applicationId/targetSdkVersion¶
- 确保
minSdkVersion要大于等于 21 ; applicationId需为游戏的 PackageName(包名);targetSdkVersion目前最高支持到 34;
build.gradle
android {
defaultConfig {
applicationId "${PackageName}"
minSdkVersion 21
targetSdkVersion 34
}
}
2. 引入依赖¶
maven方式引入、本地文件方式引入 两种方式都可以,推荐使用 纯maven方式 引入。
2.1 maven方式引入¶
使用本地文件方式引入可忽略本小节
- 工程根路径下
build.gradle文件中添加仓库
allprojects {
repositories {
maven {url "https://maven-release.webapp.163.com/repository/maven-releases/"}
}
}
- 更新依赖文件
app/build.gradle
// 【推荐】方式1:不需要拷贝 aar 等资源
def channel_version="channel_2_0_0"
// 从 maven_url 获取最新版本的 yofun_version(当前为 3.2.47.2026051113.202605111454)
def maven_url='https://maven-release.webapp.163.com/repository/maven-releases/com/netease/yofun/'+channel_version+'/maven-metadata.xml'
def yofun_version = new XmlSlurper().parse(maven_url).versioning.release
dependencies {
implementation "com.netease.yofun:${channel_version}:${yofun_version}"
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:multidex:1.0.3'
}
2.2 【不推荐】本地文件方式引入¶
使用纯maven方式引入可忽略本小节
- 将 sdk/aar 目录下的 aar包
yofunlibrary-xxxxxxxx.aarchannellibrary-xxxxx.aar拷贝到项目主模块的app/libs目录下.
// 方式2: 需要拷贝两个 aar 到 libs 目录
repositories { flatDir { dirs 'libs' } }
dependencies {
implementation fileTree(dir: 'libs', include: ['*.aar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:multidex:1.0.3'
}
- 另外仍需通过 maven 远程依赖具体的
mumulibrary版本,才能自动拉取到相关的第三方库资源:
// yofunlibrary.aar、channellibrary.aar 从本地拷贝
// 工程根路径下 build.gradle 文件中添加仓库
allprojects {
repositories {
maven {url "https://maven-release.webapp.163.com/repository/maven-releases/"}
}
}
// 模块 build.gradle 添加依赖
dependencies {
// 当前最新的 mumulibrary 版本为 3.2.47.2026051113
implementation "com.mumu.services:mumulibrary:${mumulibrary_version}"
}
- 如果需要完全使用本地依赖的方式代替,则需要下载
mumulibrary相关的所有 aar / jar 资源(相关版本号信息以最新版本为主):
// yofunlibrary.aar、channellibrary.aar 从本地拷贝
mumulibrary: https://maven-release.webapp.163.com/repository/maven-releases/com/mumu/services/mumulibrary/3.2.47.2026051113/mumulibrary-3.2.47.2026051113.aar
alipaySdk: https://maven-release.webapp.163.com/repository/maven-releases/com/alipay/alipaySdk/15.6.2-20190416165037/alipaySdk-15.6.2-20190416165037.jar
sensordata: https://maven-release.webapp.163.com/repository/maven-releases/com/universal/sensorsdata/analytics/6.2.8.2/analytics-6.2.8.2.jar
ammsdk: https://maven-release.webapp.163.com/repository/maven-releases/com/tencent/mm/ammsdk/3.1.1/ammsdk-3.1.1.jar
openpay: https://maven-release.webapp.163.com/repository/maven-releases/com/tencent/mobileqq/openpay/1.1.0/openpay-1.1.0.jar
fcount: https://maven-release.webapp.163.com/repository/maven-releases/com/netease/gpdd/fcount/2.9.20260509/fcount-2.9.20260509.aar
2.3 Kotlin 协程依赖配置¶
YofunSDK 新版本(V2.0.0.2026051114及以上)的角色事件上报使用 Kotlin 协程,接入工程需要具备 Kotlin 运行时与协程库支持。
注意:以下版本仅供参考,实际版本可按需配置;若工程已有相关 Kotlin / 协程依赖配置,则可忽略本小节。
- 工程根路径
build.gradle中加入 Kotlin Gradle 插件
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
}
}
- 在
app/build.gradle中应用插件并添加依赖
apply plugin: 'kotlin-android'
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.10'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1'
}
3. 添加填入网易Yofun提供的游戏参数¶
- 在
app/build.gradle中填入网易Yofun提供的游戏参数。
manifestPlaceholders = [
"app_id": "${这里替换为从网易Yofun获取的APP_ID}"
]
- 在
app/AndroidManifest.xml配置YOFUN_APP_ID。
<application>
...
<meta-data
android:name="YOFUN_APP_ID"
android:value="${app_id}" />
</application>
5. 支付相关的包名可见性配置规则¶
注意到 targetSdkVersion >= 30,需要配置 queries 才可以访问外部应用,SDK中已有对微信和支付宝的配置,用途是发起支付时需要使用。
<manifest package="com.example.app">
...
<queries>
<package android:name="com.tencent.mm" />
<package android:name="com.eg.android.AlipayGphone" />
</queries>
...
</manifest>
如果出现编译错误,需要开发者检查编译工具,具体要求如下:
- Android Studio 需要升级至 3.3 及以上,建议升级至 4.0 及以上版本;
- Android SDK Build-Tools 需要升级至 30 及以上版本;
- com.android.tools.build:gradle 需要升级至 3.6.0 版本,建议升级至 3.6.4 版本及以上。
6. 混淆(proguard)规则¶
如果游戏需要混淆SDK,请加入以下混淆规则:
# yofun
-keep class com.netease.yofun.external.**{*;}
-keep class com.netease.yofun.network.ServerUrl {*;}
-keep class com.netease.yofun.network.request.** {*;}
-keep class com.netease.yofun.network.annotation.** {*;}
-keep class com.netease.yofun.network.data.**{ *; }
-keep class com.netease.yofun.wrapper.**{ *; }
-keep class android.support.**{ *; }
# mumusdk
-keep class com.mumu.services.** {*;}
-dontwarn com.mumu.services.external.**
-keep class android.support.** {*;}
# wechatpay
-keep class com.tencent.a.** { *; }
-keep class com.tencent.mm.** { *; }
-keep class com.tencent.wxop.** { *; }
-keep class com.tencent.mobileqq.openpay.** { *; }
# alipay
-dontwarn com.alipay.**
-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.sdk.app.AuthTask{ public *;}
-keep class com.ta.**
-keep class com.ut.**
-keep class org.json.alipay.**
# sensorsdata
-dontwarn com.universal.sensorsdata.analytics.android.**
-keep class com.universal.sensorsdata.analytics.android.** {
*;
}