常见问题
一、广告加载失败
1、集成错误
- 适配文件没有集成
开发者需要根据打包平台确认集成的SDK都正确添加到项目中,找不到三方Adapter会报错adapter not found 或 Couldn't locate or instantiate custom event null;
- TP的混淆配置没有添加
根据《SDK配置》文档添加混淆,不添加混淆会报Couldn't locate or instantiate custom event null
- 确认集成广告源是否需要传入Activity
部分三方源需要activity才能请求成功,没有传入Activity会一直失败
- 对象调用错误
确认TP的广告位类型和new TPObject的类型一致,例如不能创建开屏的广告位ID,但是用激励视频API去请求
2、后台配置问题
- 后台没有添加广告源
确认在TradPlus创建的广告位ID下已经添加了三方广告网络,会由于拉取不到配置报no config
- 同一个广告平台配置不同的APPID
- 确认TradPlus后台是否配置的三方广告源有多个APPID
- 后台配置错误即使是不同类型也只能配置同一个APPID
- 例如Mintegral开屏类型的appId、appkey和激励视频类型的appId、appkey不一致,三方平台只支持初始化同一个APPID,多个APPID初始化会导致请求失败
3、请求某个源一直无填充
-
开发者需配合《错误码和错误信息》定位错误问题
-
如果广告一直请求失败,就需要开发者根据三方平台错误码确认集成三方广告加载失败的原因
-
开发者可以通过过滤
TradPlusLog
查看日志信息或设置LoadAdEveryLayerListener
监听oneLayerLoadFailed(TPAdError adError, TPAdInfo adInfo)回调,打印每个广告源加载失败的原因
(1)Meta或者Admob一直没有填充
-
**Meta必须使用测试广告测试,否则会有封号风险.**需要使用三方提供的测试ID去测试,可配合如何使用测试模式来测试
-
Admob必须使用测试广告测试,否则会有封号风险。(见下面截图)TradPlus测试模式测试,TradPlus后台已经将Admob测试广告配置到后台,开发者可以直接使用。
-
网络不好会偶现插屏视频中间视频播放黑屏,或者原生广告展示无展示事件。
-
请求次数过多,即使是使用测试广告也会无填充。
(2)Bidding源正式广告拉不到配置
报错日志为:
waterfall bean is null
或
Bidding Failed
-
由于TradPlus服务器策略能访问国内ip的网无法拉取到海外Bidding配置的。
-
开发者可以使用TradPlus测试模式进行测试。测试广告请求成功并展示表示内部流程已经跑通,是可以直接上线。
-
如果有需求上线前必须要用正式广告测试,那么IP必须在海外Bidding才能拉取到配置。例如:VPN开启后,不能打开CSDN情况下,才能拉取到,如下图:
(3)TapTap请求没有填充
-
由于Oaid对于TapADN SDK 的广告转化效果尤为重要,开发者请求广告前要传OAID
-
V9.9.10.1+ 支持开发者设置oaid
-
第一次请求广告时设置,以激励视频为例
TPReward mTpReward = new TPReward(activity, "AdUnitId");
Map<String, Object> mLocalExtras = new HashMap<>();
mLocalExtras.put("tap_oaid","手机设备的oaid");
mTpReward.setCustomParams(mLocalExtras);
mTpReward.loadAd();
- V9.9.10.1之前的版本,开发者要重写TapAdCustomController类,传入oaid,请求广告前传给TP,开发者可参考Demo设置
TapTapInitManager.getInstance().setTTCustomController(new TapTapUserDataCustomController());
二、广告加载成功但是展示失败
1、广告加载成功后没有调用showAd
- (1)各类型广告
onAdLoaded(TPAdInfo tpAdInfo, TPBaseAd tpBaseAd)
或oneLayerLoaded(TPAdInfo adInfo)
加载成功监听是否回调 - (2)激励、插屏、开屏
isReady()
为true,后调用showAd()。
2、广告位类型请求的API是否类型匹配
- 例如创建开屏的广告位,但是使用激励视频的API去请求。
- 开发者可以通过打印
onAdVideoError(TPAdInfo tpAdInfo, TPAdError tpAdError)
或onAdShowFailed(TPAdError error, TPAdInfo tpAdInfo)
查看报错原因。
3、激励视频、插屏
-
(1)showAd调用没有传入activity
showAd(Activity activity, String sceneId)
展示广告是否传入Activity,context会导致部分广告源展示失败。 -
(2)后台配置问题
errorMsg为
frequency limit
,TP广告位是否设置了频次限制。
4、标准原生
-
(1)
showAd(ViewGroup adContainer, int layoutId)
容器是否为空 -
(2)开发者是否修改布局文件中的android🆔 资源ID,会导致自渲染广告的元素无法找到对应id而展示失败
-
(3)后台配置问题
errorMsg为
frequency limit
,TP广告位是否设置了频次限制。
5、开屏
- (1)开发者需确认加载和展示广告是否使用配对的API,正确传入容器,具体请查看《开屏文档》
- (2)后台配置问题
errorMsg为
frequency limit
,TP广告位是否设置了频次限制。
6、Meta的原生横幅
- 容器的宽必须是match_parent,不能是wrap_content,否则会导致展示失败。
7、Bigo的原生横幅
- bigo原生横幅有填充但是没展示,bigo对原生广告的要求是一定要有大图,即mediaView,否则不算展示。用我们的默认布局模板是有设置mediaView的,如果是自定义样式注意需要加上mediaView。
三、应用ID与广告位ID不匹配问题
一般出现这样提示有以下几种情况:
- 没有调用tradplus的初始化就去load了,这种情况下load广告的时候用的appid是空的
- 调用tradplus的初始化是在load 广告后,同上一种情况
- 初始化没有成功就load广告,同上一种情况
- 开启了tradplus的测试模式,测试模式下发的是tradplus默认配置,确实会不一样。这种可以忽略
- 初始化也是提前调的,但是load还提示这个,那么可能确实用的appid和广告位id不是一个app下的,需要去tradplus后台查看应用管理。
四、编译报错
1、拉取TP SDK 或 TP对应的三方Adapter Gradle 失败
-
步骤1:开发者需根据打包平台确认集成的SDK正确
- (1)是否是5.X更新上来的用户:由于JCenter仓库停止服务,TP和三方平台的仓库均有更新,请老版本升级上来的客户对照打包平台一一修改引用
- (2)版本号是否能一一对应或者是否有字母写错的情况
- (3) Android Studio HTTP Proxy状态正常
- (4) Gradle是否属于“离线模式”—— 'offline mode'情况下构建项目是不会在线拉取第三方依赖包的
-
步骤2:确认Module级和Project级中build.gradle中正确引入了
mavenCentral()
和google()
repositories {
mavenCentral()
google()
jcenter()
...
}
}
-
(1)关于Module和Project,Unity开发者可以参考Google官网的Android Studio模块结构说明。
-
(2)需注意
mavenCentral()
是否写成mavenLocal()
,mavenLocal()
是本地Maven仓库,第一次拉取TP Gradle需从线上拉取 -
(3)各个代码库的列出顺序决定了 Gradle 在这些代码库中搜索各个项目依赖项的顺序。类似如下图情况表明tradplusad跑错了仓库导致拉取失败,此时开发者需要将
mavenCentral()
的位置调整到最高,重新拉取。 -
步骤3:Android Studio Gradle是否是离线状态?
- 不知道怎么判断,初次接触Android的开发者可直接Google或Baidu,“gradle切换online/offline mode模式”。
-
步骤4:电脑是不是开了代理?导致“All packages are not available for download”报错。
- 不知道怎么关闭,初次接触Android的开发者可直接Google或Baidu,“Android Studio如何关闭代理”。
-
步骤5:海外源一些拉取成功,个别拉取失败,大多是网络问题,开VPN切换国家尝试。
2、queries相关
unexpected element <queries> found in <manifest> or Error: Missing package key attribute on element package
-
由于集成的三方广告平台SDK对Gradle plugin的版本有要求,而旧版本的 Android Gradle 插件找不到对应的元素导致报错。
-
开发者需要先确认使用的Gradle版本。然后根据各个Android Gradle 插件版本所需的Gradle 版本。找到可使用的Gradle plugin 版本范围,并根据Android Gradle plugin fixes更新Gradle plugin版本就可以解决报错问题。
3、try name ‘AndroidManifest.xml’ collided`
需开发者要在build.gradle中添加
android {
packagingOptions {
exclude 'AndroidManifest.xml'
}
}
4、java.lang.NoClassDefFoundError:Failed resolution of:Lcom/google/android/gms/ads/rewarded/RewardedAd
-
原因:同时引入 AdMob 与 Firebase
-
解决: 只能引入一个,同时firebase要引入和推荐 的Admob Adapter一样的版本。
// 版本号,仅作举例说明,具体Firebase接入的版本要和TP Admob 推荐的版本号一致
// implementation 'com.google.android.gms:play-services-ads:21.0.0'
implementation 'com.google.firebase:firebase-ads:21.0.0'
5、The Google Mobile Ads SDK was initialized incorrectly
-
原因:集成Google Admob后自 Google 移动广告 SDK v17.0.0 起,必须添加此
<meta-data>
标记,如果不添加应用会崩溃,同时收到上面的Log。 -
解决: 根据《集成文档》中三方配置声明部分,正常集成SDK
6、AAPT: error: resource android:attr/lStar not found.
详细报错信息如下:
Execution failed for task ':app:checkDebugAarMetadata'.
> Multiple task action failures occurred:
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-30).
Dependency: androidx.core:core-ktx:1.7.0.
AAR metadata file: .gradle/caches/transforms-2/files-2.1/14c9ccd33a3c43ada608a2400c01e86e/jetified-core-ktx-1.7.0/META-INF/com/android/build/gradle/aar-metadata.properties.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-30).
Dependency: androidx.core:core:1.7.0.
AAR metadata file:.gradle/caches/transforms-2/files-2.1/ac6a4373db31c761b96c2d467c311f0a/core-1.7.0/META-INF/com/android/build/gradle/aar-metadata.properties.
- 原因:集成三方平台SDK版本中引用core-ktx、core版本和项目版本不同
- 解决方法一: 需要更改编译版本compileSdkVersion升级到31,然后重新编译
- 解决方法二: 在app的build.gradle中添加如下,强制项目使用具体的版本,代码示范如下:
configurations.all {
resolutionStrategy {
// 开发者需引入项目中已有版本
force 'androidx.core:core-ktx:1.5.0','androidx.core:core:1.6.0'
}
}
7、com.tencent.mm.opensdk重复引用
-
MTG从SDK16.1.7版本起,支持小程序跳转功能
-
非上架GP市场SDK会自动引入opensdk。如果开发者同时接入GDT会有冲突。可以使用exclude排除.
implementation ("com.mbridge.msdk.china:reward:${sdkVersion}"){
exclude group: "com.tencent.mm.opensdk", module: "wechat-sdk-android"
}
implementation ("com.mbridge.msdk.china:mbsplash:${sdkVersion}"){
exclude group: "com.tencent.mm.opensdk", module: "wechat-sdk-android"
}
implementation ("com.mbridge.msdk.china:mbbanner:${sdkVersion}"){
exclude group: "com.tencent.mm.opensdk", module: "wechat-sdk-android"
}
implementation ("com.mbridge.msdk.china:mbnative:${sdkVersion}"){
exclude group: "com.tencent.mm.opensdk", module: "wechat-sdk-android"
}
implementation ("com.mbridge.msdk.china:mbnativeadvanced:${sdkVersion}"){
exclude group: "com.tencent.mm.opensdk", module: "wechat-sdk-android"
}
implementation ("com.mbridge.msdk.china:newinterstitial:${sdkVersion}"){
exclude group: "com.tencent.mm.opensdk", module: "wechat-sdk-android"
}
implementation ("com.mbridge.msdk.china:mbbid:${sdkVersion}"){
exclude group: "com.tencent.mm.opensdk", module: "wechat-sdk-android"
}
8、更新Google Admob SDK到V21.0.0后与Firebase有冲突报错
Duplicate class com.google.android.gms.measurement.internal.zzhe found in modules jetified-play-services-measurement-base-20.1.2-runtime (com.google.android.gms:play-services-measurement-base:20.1.2) and jetified-play-services-measurement-impl-19.0.1-runtime (com.google.android.gms:play-services-measurement-impl:19.0.1)
- 解决: 更新FireBase到最新版本
9、Error:AAPT: error: unexpected element <property> found in <manifest><application>
-
原因:Google Admob 更新到 22.4.0 或者 Yandex 更新到6.0.1,这两个平台对Android Gradle版本有要求,低版本Android Gradle找不到对应的元素导致报错。
-
解决: 更新Gradle插件版本到4.2.0+,Unity3D平台集成用户可以参考升级 Gradle for Android来更新Gradle