常见问题

Important

有任何表现异常的问题,都可以优先使用其他真机或模拟器,编译安装demo包,来验证是SDK内部的问题还是接入的问题、是参数配置的问题还是接口调用的问题。

问:yofun是否还可以支持二次分包的功能?

答: 二次分包是指我们会在后台对包体进行二次打包;其中,游戏接入YofunSDK后的包体称作母包,经过我们二次打包后的包体称作分包。

  1. <2.0.0版本,强依赖二次分包的功能。 二次打包会修改SDK的实现,其目的一是使用最新版本的MUMUSDK,二是支持内部其他子渠道的分发,三是一些功能比如闪屏、角标、游戏接入过程中的问题,会在打包的时候进行修复。
  2. >=2.0.0及之后的版本 默认都不做二次分包了 。即游戏提供什么,我们优先分发什么。但是 2.0.0 及之后的版本还保留二次分包能力,注意包名信息不要写死。如果需要用到包名,请动态获取,比如:
Context.getPackageName()

// 如果使用到了 Content Provider,那么在写 Uri 和 Authority 用到包名时也做类似处理:
Uri uri = Uri.parse("content://"+getPackageName() + YOUR_PATH);
String Authority = getContext().getPackageName()+ YOUR_PATH;

问:启动时出现异常,如崩溃或有SDK的报错: please call init first

答:字面意思,在初始化完成前就先调了SDK功能接口。注意集成 applicationAttach ,和调用初始化init接口。

Api.getInstance().applicationAttach(app);
Api.getInstance().applicationCreate(app);

Api.getInstance().register(mAction);
Api.getInstance().init(this);

问:启动时弹出了隐私协议弹窗,点拒绝后没反应/表现异常

答:拒绝SDK的隐私协议弹窗后,会触发SDK的 onQuit() 回调通知,请检查是否有正确处理。

此外,隐私协议弹窗是一个Activity,如游戏有一些特殊逻辑需要处理,请注意。

问:无法调起登录/调SDK登录接口没反应

答:看下有无打印日志,自查参数配置,初始化和闪屏接口的接入。 也可以同样的参数配置在我们给的demo包中,对比看看是否能够正常运行。

问:运行时闪退,查看日志提示 android.content.res.Resources$NotFoundException

答:日志表明有资源找不到了,可能跟游戏包体用了资源文件加密、压缩等处理有关,需要注意下。

问:切换账号时没反应/闪退

答:切换账号时会触发 onLogout(code) 回调,请检查是否在此时正确处理回调。

问:支付回调如何配置/游戏服务端没有收到支付回调

答:首先,支付回调是要接入时配置在客户端内的。 其次如果确实支付成功,支付回调是肯定会有的,请检查游戏服务端的验签等流程是否失败了导致自己拦截了回调。

问:游戏包定义了一些自定义/私有属性(attr-private),会有影响吗

答:会的。YofunSDK需要在后台进行二次打包,所以目前对游戏包体中的自定义属性/私有属性等无法处理,如有,请先去掉。

问:网易Yofun对游戏包体大小有要求吗?

答:没有其他特殊要求,但是尽量小一些。

问:有库冲突怎么办?

答:网易Yofun用到的库有:

com.android.support:appcompat-v7:28.0.0
com.android.support:multidex:1.0.3

插件中引用的库有:

implementation 'com.alipay:alipaySdk:15.6.2-20190416165036'
implementation 'com.tencent.mm:ammsdk:3.1.1'
implementation 'com.tencent.mobileqq:openpay:1.1.0'
implementation 'com.universal.sensorsdata:analytics:6.2.8.2'

SDK中代码的包名是 com.netease.yofun 和 com.mumu.services。有冲突可以优先使用上述SDK提供的依赖。

如果实在没有办法兼容,可以在讨论组中联系我们技术人员处理。

问:SDK支持AndroidX吗?

答:SDK外放版本只支持support,正常来说游戏如果要用AndroidX,参考谷歌官方开发手册中的AndroidX迁移方案做好兼容即可(https://medium.com/androiddevelopers/migrating-to-androidx-tip-tricks-and-guidance-88d5de238876)。具体来说,如下三行修改:

gradle.properties

android.useAndroidX=true
android.enableJetifier=true

build.gradle

// delete: implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'

问:实在无法处理闪屏,可以交给网易Yofun自行处理闪屏吗?

答:SDK提供了几种闪屏的方法可以尝试接入,择一接入即可:

// 方法1
// SDK内置了3中类型实现的闪屏(0,1,2)可以自测效果选择调用。
Api.getInstance().displayChannelLogo(this, 0, null);

// 方法2
// 在启动的时候显示一个白底的MUMU的logo,logo xhdpi资源在:
// test/common-resource/netease_yofun_splash_logo.png

Important

其他问题,请到对应讨论组咨询我们的技术人员。

问:网易Yofun有提供快速接入角标的方法吗?

答:除了自行接入角标,在 test/common-resource 中有提供一些现成的脚本,可以直接使用。使用方法说明如下

step 1: 拷贝 water_mark.py netease_yofun_plugin_ic_launcher.jpg 两个资源到 项目根目录/app 目录下

step 2: 在项目根目录/app 下执行命令: python water_mark.py -i ic_launcher

step 3: 替换 out 目录下的资源到 app 目录中,重新出包

本文件用于生成带角标的应用图标
- 文件目录说明
|—— [输入]app/res/drawable-xhdpi/ic_launcher.png
|—— netease_yofun_plugin_ic_launcher.jpg
|—— water_mark.py
|
L__ [输出]out/res/drawable-xhdpi/ic_launcher.png

ic_launcher 一般配置在 AndroidMainfest.xml 文件中
    application 的 android:icon/android:roundIcon 位置中
如果打出来的角标不对,可以看看是不是文件名错了。

使用方法:
python2 water_mark.py -i ic_launcher

基于docker增加角标的方法:
docker run --rm -v "$(pwd):/app" -w /app yeshen/ic-launcher:1.0.0  python water_mark.py --icon_name ic_launcher