Android SDK常见问题
文档简介
欢迎使用我们的SDK!此文档将全面指导您将如何解决在接入TobidSDK过程中遇到的问题,如有疑问请联系Tobid技术支持🫰。
让我们现在快速开始了解分类吧~
1. 集成相关问题
1、Android SDK 是否支持AndroidX?
支持
2、Android SDK 是否支持GDPR?
我们支持GDPR,具体使用请参考集成说明文档关于GDPR说明。
3、Android SDK 是否支持Android Q(10)?
Android 10 无法获取IMEI,需要设备已经集成GMS服务或者开发者集成 OAID SDK。
4、Android SDK是否支持多进程?
我们支持多进程,具体使用参考集成说明文档关于多进程说明。
5、Android SDKSDK初始化时针对方法 startWithAppId 是否可以重复调用?
startWithAppId方法仅对首次初始化成功生效。建议在正常情况下,仅初始化一次以确保SDK运行效率和稳定性。
6、Android SDKSDK初始化可以放在子线程进行吗?
支持在子线程中初始化SDK,但需确保初始化成功后再发起广告请求。
7、异步初始化SDK的情况下,是否在子线程执行完startWithAppId方法后就能知道SDK是否初始化成功?
Tobid 可以在子线程初始化,如果在子线程初始化可以通过 WindMillAd.WindMillAdInitListener 监听初始化成功回调状态,只有初始化完成才能进行广告load行为。
ads.startWithAppId(this, appId, new WindMillAd.WindMillAdInitListener() {
@Override
public void onInitSuccess() {
Log.d("WindMill", "----------onInitSuccess----------");
}
@Override
public void onInitFailed(int errorCode, String errorMsg) {
Log.d("WindMill", "----------onInitFailed----------" + errorCode + ":" + errorMsg);
}
});8、Android SDK集成荣耀的广告SDK为什么会报错?
java.lang.NoSuchMethodError: No static method create(Ljava/lang/String;Lokhttp3/MediaType;)Lokhttp3/RequestBody; in class Lokhttp3/RequestBody; or its super classes荣耀广告SDK 内部有对okhttp等三方引用,荣耀新版本SDK引用了 okhttp 内部新的方法,该方法在 okhttp低版本可能不存在,建议和荣耀依赖的三方SDK保持一致,荣耀三方SDK依赖可详见 :https://developer.honor.com/cn/docs/20030/guides/maven-repository-configuration-guide
9、Android SDK使用聚合集成穿山甲渠道SDK,为什么会报错4205 / 700641?
请检查如下所项:
1.非androidx项目没有引入对应的support库;
2.请确认项目是否支持了com.android.support:appcompat-v7:28.0.0;
3.so架构问题:穿山甲SDK自3.9.0.0版本后,默认仅支持arm64-v8a和armeabi-v7a两种架构,不再支持armeabi 。
10、Android SDK原生广告在A页面进行load,在B页面进行show,当onADRenderSuccess 之后页面应该填充的位置没填充,但同一个页面load和show正常。
信息流模板后面统一在onADRenderSuccess 回调里获取view,有的渠道可能只有成功,getExpressView获取不到View绑定后才给view。
11、Android SDK接入自定义渠道后一直报错广告加载超时,错误码 700641
因为callLoadBiddingSuccess(通知聚合竞价成功并且返回价格)和callLoadSuccess(通知聚合广告加载成功)需要同时调用,开发者只调用了callLoadBiddingSuccess,导致报700641的超时错误
12、请求优量汇渠道广告后报错:“GDTNativeAdAdapter onNoAD 4013:在旧版SDK上使用了模板视频的广告位,请升级优量汇SDK版本至最新” 或 “广告位ID与SDK接口不匹配,请参考SDK文档调整为信息流优选模板接。”
请检查以下两点:
1.Tobid聚合版本所对应的GDT版本和适配器版本是否对应。
2.请确保两个平台创建的广告位模板渲染类型匹配。
13、targetSdkVersion 28以上http支持
</manifest>
<application android:networkSecurityConfig="@xml/network_security_config">
</manifest>
network_security_config.xml 文件配置
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true"/>
</network-security-config>14、引入huawei渠道后报错冲突,报错信息如下:
Attribute meta-data#hw_ads_sdk_type@value value=(2) from [ads-base-inner-13.4.71.300.aar] AndroidManifest.xml:35:13-30
is also present at [ads-lite-inner-13.4.71.300.aar] AndroidManifest.xml:16:13-30 value=(6).
Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:33:9-35:33 to override.报错原因:华为渠道的hw_ads_sdk_type冲突导致,需要删掉一个,截图如下 删掉valve=6的依赖即可。
还可以在XML增加如下代码强制覆盖
<!-- 覆盖huawei value冲突的问题 -->
<meta-data
android:name="hw_ads_sdk_type"
android:value="2"
tools:replace="android:value" />15、Huawei渠道和广协的oaidSDK同时使用会报错冲突如下:
java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class com.huawei.hms.ads.identifier.AdIdVerifyException found in modules classes.jar (ads-identifier-3.4.62.300.aar) and classes.jar (oaid_sdk_1.0.25.aar)
Duplicate class com.huawei.hms.ads.identifier.AdvertisingIdClient found in modules classes.jar (ads-identifier-3.4.62.300.aar) and classes.jar (oaid_sdk_1.0.25.aar)
Duplicate class com.huawei.hms.ads.identifier.AdvertisingIdClient$Info found in modules classes.jar (ads-identifier-3.4.62.300.aar) and classes.jar (oaid_sdk_1.0.25.aar)冲突原因:ads-identifier-3.4.62.300.aar 和 oaid_sdk_1.0.25.aar 引用了相同的类
解决方案:可去掉截图中的ads-identifier-sdk文件 
16、 系统installProvider失败或者开启MultiDex导致的Not find Class
android {
buildTypes {
release {
multiDexKeepProguard file('multidex-config.pro')
...
}
}
}17、 方法数65k问题解决
- build.gradle defaultConfig 开启multiDexEnabled
defaultConfig {
multiDexEnabled true
}- build.gradle dependencies 增加 multidex
dependencies {
//AndroidX
def multidex_version = "2.0.1"
implementation "androidx.multidex:multidex:$multidex_version"
//非AndroidX
implementation 'com.android.support:multidex:1.0.3'
}- 修改 MyAppcation 继承 MultiDexApplication
public class MyAppcation extends MultiDexApplication {
override fun attachBaseContext(base: Context) {
super.attachBaseContext(base)
MultiDex.install(this) //Multi 安装
}
}18、 AndroidX与Android support 冲突
- 在项目根目录下文件gradle.properties,添加以下代码
android.enableJetifier=true
android.useAndroidX=true19、SDK集成后的大小有多少?
集成后的安装包大小增加300KB左右,Jar包大小为800多KB
20、Android SDK在使用OAID的情况下聚合接入华为SDK广告后会编译不通过,和OAIDSDK发生冲突。
华为SDK自带获取OAID的逻辑,因此不支持与第三方OAID SDK同时集成,建议可以直接手动去除去掉华为SDK文件中的ads-identifier-sdk。

21、AndroidX与Android Support 兼容问题?
移除Android Support 依赖库, 修改项目 gradle.properties 文件 添加 android.enableJetifier=true 和 android.useAndroidX=true
22、优量汇(广点通)banner报错如下:
strategy = [gdt], error = [{ "error_code":0,"externalErrorCode": "null" , "message": "loadAd with activity is null or adSize is error" }]activity为空或是代码中传的尺寸不合规,只能是整数不能是小数。
23、广点通(优量汇)原生自渲染广告logo获取到的是null,但是右下角会自带一个,怎么改变位置?

24、Android原生自渲染怎么隐藏logo 不显示?

25、Android 端 GDT 广告,原生自渲染广告类型使用视频素材场景下,调用 bindMedia 方法后,视频容器未加载出视频内容,可能的原因是什么?
请您重点排查 bindMedia 方法执行时序,需在 setMediaViewOption 之后、视频容器就绪时调用 bindMedia,保证与 SDK 规范的调用顺序匹配 ,否则会出现视频素材无法加载展示的情况。
26、安卓端部分设备点击激励视频广告按钮后,无法正常跳转至目标页面?
设备可能开启了限制快应用跳转等相关设置,导致广告唤起功能被拦截。请检查用户设备是否存在限制快应用跳转的设置,指导用户关闭此类限制后重试。 
注:上图以 Nova13 设备为例展示相关设置界面,不同安卓厂商设备的具体设置路径及界面可能存在差异,需以实际设备情况为准。
27、Android 端 GDT(优量汇)渠道报 “init gdt fail” 初始化失败,如何解决?
onNetworkInitFailed->channelId:16, errCode:0, errMsg:init gdt fail Parameter specified as non-null is null: method cn.neoclub.common.ukiadsdk.splash.third.impl.skyengine.TTSkyengineAdSdk$init$5.onNetworkInitBefore, parameter obj
dUkiSplashLoader.kt:105)排查发现可能是相关对象的 initInstance 为空导致。若使用 Kotlin 开发,可对该对象添加可为空的处理,以适配可能的空值情况,保障初始化流程正常。
28、Android 平台热启动开屏广告优量汇报错 4004(提示 “开屏场景的广告容器不可见”)如何解决?
因show时广告容器viewGroup不可见或传入异常,可通过调用viewGroup.setVisibility(View.VISIBLE);设置容器可见性来解决。
29、安卓端原生自渲染广告,首条广告可以展示,后续就一直不能正常展示了,滑出屏幕在滑回来就能展示,如何解决
bindMediaView,bindViewForInteraction调用顺序错误,需调整前后顺序,详情请查看文档WMNativeAdData字段详解部分
30、安卓使用聚合SDK,Oppoadn渠道展示视频广告时崩溃,报错java.lang.UnsupportedOperationException,应如何解决?
此问题是由于开发者使用了Kotlin并且在bindViewForInteraction传入了listOf()创建的不可变列表,在广告渲染时被尝试修改导致。请将相关列表(如绑定广告的控件集合)改为使用ArrayList等可变列表实现即可修复。
31、安卓端Android X项目集成穿山甲渠道会报错Unable to get provider com.bytedance.sdk.openadsdk.TTFileProvider
建议您在项目中调整该参数为true以此来解决该问题,gradle.properties 加下android.enableJetifier=true
32、安卓端原生模板渲染广告,点击关闭按钮后无法关闭广告?
请您实现原生dislike监听代码,收到监听回调后remove移除view。
nativeAdData.setDislikeInteractionCallback(this, new WMNativeAdData.DislikeInteractionCallback() {
@Override
public void onShow() {
Log.d("lance", "----------onShow----------");
}
@Override
public void onSelected(int position, String value, boolean enforce) {
Log.d("lance", "----------onSelected----------:" + position + ":" + value + ":" + enforce);
if (adContainer != null) {
adContainer.removeAllViews();
}
}
@Override
public void onCancel() {
Log.d("lance", "----------onCancel----------");
}
});33、广告加载回调了加载成功(如 onAdLoadSuccess),但播放前调用 isReady 时却返回 false,是什么原因?

A:如您的设备有调整过系统时间,建议您恢复到当前时间重新尝试。
34、集成SDK后,运行时报错 40016,提示“应用ID和代码位ID不一致”,但ID核对无误,怎么办?
A: 这个错误最常见的原因是媒体自身有“初始化渠道”的操作。
- 现象:您可能在调用ToBid SDK之前,自己先初始化了穿山甲等渠道的官方SDK或其他等方式实现初始化。因此广告加载失败报错40016。
- 排查方向:
- 请检查是否有用到Tobid前置初始化。
- 请您检查您的项目中是否有单独初始化穿山甲SDK。
35、为什么我的广告请求一直报错 700400 或 700500,提示“没有广告源”或“找不到适配器”?
A: 这两个错误原因不同:
- 700400 (无广告源):
- 检查广告位ID:确认您请求时使用的placementId是聚合广告位ID,而不是某个渠道的代码位ID。
- 检查广告类型:确认您在后台为该聚合广告位配置的广告类型,与您代码中请求的类型一致(例如,不能用一个开屏的聚合ID去请求插屏广告)。
- 检查渠道状态:登录ToBid后台,检查该广告位下配置的渠道是否开启,是否有填充。
- 700500 (找不到适配器):
- 确认集成完整:您可能只集成了ToBid核心库,但没有集成对应渠道的适配器库。例如,您在后台配置了穿山甲,但工程中未添加 windmill-adapter-csj 的依赖。
- 适配器版本匹配:检查您集成的渠道适配器版本是否与当前ToBid核心库版本兼容。通常,升级SDK时需要同时升级所有适配器。
36、我的服务器收不到激励视频的服务端回调,可能是什么原因?
A: 服务端回调收不到,通常有以下几种排查方向:
- 检查 userid 合法性:
- 不能为空:您在客户端请求广告时,必须通过 WindMillAdRequest 设置 userId。
- 不能超长:userId 长度不能超过 64个字符,超长会导致解析失败,回调无法发出。
- 特殊字符:尽量避免在 userId 中使用特殊字符,以防编码问题。
- 检查回调地址配置:确认您在ToBid后台配置的服务端回调地址(URL)是正确且可以公网访问的,并且没有设置IP白名单导致我们的服务器被拒(如果有IP白名单,需要将ToBid的回调服务器IP加入白名单)。
- 超过服务器响应时间3000ms。
37、Android广告请求报错700000?报错样例:{ "error_code":700000, "message": 无广告返回,各adn的详细错误信息可通过接口:getloadFailMessage 获取或者在广告平台相关报表查看 }
A:聚合维度报错无广告填充,可多次请求尝试,如尝试无果 1. 可在聚合平台->瀑布流管理->广告源诊断里查看报错原因 2. 在代码广告加载失败监听里使用广告对象调用getloadFailMessage获取渠道维度的报错信息。
2. Crash相关问题
1、安卓热启动请求华为开屏广告展示后会卡住?
该问题是华为SDK内置链路的问题,热启动的时候是退到后台过程中进行了预加载 ,预加载成功后华为SDK就认为已经曝光了 在退到后台以后就走了曝光和关闭,当回到前台真正用的时候就任何回调都不给了。
3. 错误码相关问题
1、广告请求为什么收到广告无填充(700000)?
广告无填充的原因很多,具体可参考错误内容里面的Message,或者联系我们的商务人员或者技术支持。
2、广告请求为什么收到请求报错渠道适配器版本不兼容(700510)?
请检查接入的渠道适配器aar的版本是否位文档要求的版本。
3:广告请求为什么收到广告请求出错(700600)?
此情况是原因比较复杂,请查看返回错误的Message或者联系我们的商务人员或者技术人员。
4、广告请求为什么收到未找到该渠道的适配器(700500)?
请添加对应渠道的Adapter AAR,您可参考集成文档
4、Android 端请求任意广告类型,均返回错误码 500607,如何排查?
onSplashError: {"error_code":700400, "message": erroor_code:500607 msg:request body empty } :placementId:4493887381231881请您检查广告请求流程中,传入自定义分组规则的参数映射集合(map 集合)。若该集合为空,会触发 500607 “request body empty” 报错,需确保集合正确初始化并填充有效参数,再重新发起广告请求验证 。
5、为什么穿山甲会报错 40006 广告位ID不合法?
[csj], error = [{ "error_code":40006,"externalErrorCode": "0" , "message": "reason: 0 message: 广告位ID不合法" }]- 请检查是否是新建的代码位,如新建需要等待30分钟后重试。
- 请检查代码位ID是否还是生效状态,如已停用的状态会报错ID不合法。
- 请检查是否单独初始化穿山甲并且初始化里的应用ID和聚合变现平台中配置的应用ID不一致导致的错误,需要修改为一致。
4. 其他
1、将广告请求后先缓存在本地,如果本地缓存的广告失效了,会重新请求吗?由开发者自己处理还是ToBidSDK处理?
三方广告的超时由 SDK 的 ready 问询接口检查。如果广告已超过预设的超时时间,ready 方法会返回 false,此时,开发者需要自行处理下一次广告加载,SDK 内部不会自动触发加载逻辑。
2、安卓端Logcat控制台输出报错:解释dns没有解析到dc.sigmob.cn
E/sigmob: java.net.UnknownHostException: Unable to resolve host "dc.sigmob.cn": No address associated with hostname开发者可能在当前的设备或客户端设置了VPN或是局域网,无法访问外网所导致,建议切换其他网络或移动网络重新尝试。
3、Banner 横幅广告如果开启瀑布流里面的自动刷新按钮会导致重复load 多次吗?
会重复load,可以通过监听区分是开发者主动load还是Tobid自动load,Banner 集成文档中有刷新成功和刷新失败的接口,如开发者手动load则会走广告加载成功和广告加载失败。
4、安卓AutosSize 的框架导致 Sigmob、穿山甲渠道的开屏激励插屏展示错位。
因为加了AutoSize 的框架导致展示错位,可以把以下Activity 添加AutoSize 的过滤,也就是 AutoSize 对以下页面不生效。
//sigmob:
com.sigmob.sdk.base.common.LandscapeTransparentAdActivity
com.sigmob.sdk.base.common.PortraitTransparentAdActivity
com.sigmob.sdk.base.common.LandscapeAdActivity
com.sigmob.sdk.base.common.PortraitAdActivity
com.sigmob.sdk.base.common.AdActivity
com.sigmob.sdk.base.common.TransparentAdActivity
//穿山甲过滤 Activity
com.bytedance.sdk.openadsdk.stub.activity.Stub_Standard_Activity
com.bytedance.sdk.openadsdk.stub.activity.Stub_Standard_Portrait_Activity
com.bytedance.sdk.openadsdk.stub.activity.Stub_Standard_Activity_T
com.bytedance.sdk.openadsdk.stub.activity.Stub_Standard_Landscape_Activity
com.bytedance.sdk.openadsdk.stub.activity.Stub_Activity
com.bytedance.sdk.openadsdk.stub.activity.Stub_SingleTask_Activity_T
com.bytedance.sdk.openadsdk.stub.activity.Stub_SingleTask_Activity5、user id 是什么值,是否可以传null?
userId是应用为注册用户分配的id与设备id无关,正确传入这个id可以更好的优化广告效果,提高媒体的收入,如果没有可以传入null
6、点击游戏下载,没有反应?
一般是provider没配置,需要引入Android-support-v4,极端情况下是游戏过大,磁盘没有下载空间。
7、Android 5.0以下部分机器视频无法播放?
此情况可能是手机编码器不支持H264 baseline 解码器导致。
8、部分广告无法播放?
请检查是否添加了对Http的支持,具体支持方式参考集成说明文档。
9、请求视频广告,isReady检查返回False/无法播放广告?
isReady检查返回False/无法播放广告必须收到loadSuccess之后
10、请求播放后,无法再播放广告?
ToBidSDK每次播放必须有对应的load请求,一次请求广告,不能播放两次。
11、告请求加载时长多久?
这个根据网络情况,一般是3-5秒完成,网络比较差可能会比较慢或者加载超时,建议合理增加播放与预加载调用间隔。
12、Android 10 国内如何填充广告?
建议集成MSA联盟的OAID生成SDK,具体集成见 http://www.msa-alliance.cn/col.jsp?id=120