快速开始¶
获取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提供了
aar
MAVEN
的两种形式的资源,详情见 引入依赖 章节。
角标与闪屏¶
角标资源在(以相关联系人提供的为准) 应用角标规范
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
要大于等于 17 ; applicationId
需为游戏的 PackageName(包名);targetSdkVersion
目前最高支持到 34;
build.gradle
android {
defaultConfig {
applicationId "${PackageName}"
minSdkVersion 17
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"
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方式引入 忽略本小节
- 工程根路径下
build.gradle
文件中添加仓库
allprojects {
repositories {
maven {url "https://maven-release.webapp.163.com/repository/maven-releases/"}
}
}
- 将 sdk/aar 目录下的 aar包
yofunlibrary-xxxxxxxx.aar
channellibrary-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'
implementation "com.mumu.services:mumulibrary:${mumulibrary_version}"
// gradle.properties 文件中定义了 mumulibrary_version=xxx
}
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.** {
*;
}