APK接入常见问题
一、第一次打开应用取不到广告,返回11005错误
可以试下授权之后杀死应用再次进入,验证是否能够正常出广告
第一次取不到广告,是因为还没拿到权限就调用init初始化SDK。初始化SDK之前需拿到SDK需要的权限,否则初始化校验权限不通过会失败
可以判断onRequestPermissionsResult成功拿到权限之后再进行初始化
二、视频类广告黑屏但是有声音
在VideoActivity添加硬件加速
<activity
android:name="com.opos.mobad.activity.VideoActivity"
android:hardwareAccelerated="true"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="sensor" \>
三、com.a.a.a报的冲突错误
通常此类问题是因为jar包中重复com.a.a.a导致,SDK中使用com.a.a.a,如果开发者接入了其他的jar,并且也有com.a.a.a,就会导致报错
四、包关于.market的NameNotFoundException错误,未在OPPO手机上运行,获取商店版本出现错误
找不到商店版本,使用oppo手机才能出广告
五、IdProviderImpl报错
这个是获取不到id报的,不影响正常功能
六、插屏、开屏、激励视频等广告显示不出来(白屏、没有关闭按按钮),如果是游戏类接入通常是引用不到assets的资源文件,需要拷贝出来到游戏开发平台引用
log出现openAsset的错误,如果是游戏类的接入,可能是引用不到sdk的assets的图片资源,需要拷贝资源到对应的目录下
七、报code=-1的错误
可能是未依赖okio、wire、或者是否使用了代理
网络出现问题:
【1】有依赖okio、wire库
【2】是否使用了代理,可以使用移动网络看下是否有问题
版本号大于330之后,若偶尔出现-1的错误码,可忽略,是由于网络超时导致
八、now time over ad expore time
手机时间与实际时间不符,需要调回正常时间
九、原生getImgFiles() 这个List是空
确定申请的原生广告类型,若是原生-自渲染-默认类型,只返回icon
十、原生获取logo图片为空,
若logo图片为空,建议媒体自行打底渲染广告字样
十一、线上返回广告,但是调用show方法回调10006本地没有广告
可能是存在多个广告对象,但是使用的是同一个回调,导致错误广告对象调用show而没有广告
十二、错误堆栈输出找不出到proto相关类
可自查是否引入okio、wire相关
是否引入的三方包中已包含这个okio,导致冲突
十三、java.lang.ClassNotFound.Exception:Didn't find class "xxx" on path: DexPathList[zip file "/data/app/xxx-1/base.apk"]xxxxx
可反编译有问题的apk看下对应路径的类是否存在,若不存在可以确定下是否由于混淆将对应类混淆导致
确认在build.gradle 中是否声明了multiDexEnabled 为ture,是的话可以将apk使用jadx-gui.exe反编译查看对应路径的类是否存在,存在则说明是由于分包造成找不到类,可搜索定制分包相关方案解决
十四、demo编译报错 Execution failed for task ':processReleaseResource' > Android resource linking failed Output: error: resource style/xxxTheme not found.
原因之一:可能是因为gradle版本过高导致,可通过以下方案验证
打开压缩包中的MobDemo项目验证是否正常,若正常则大概率是因为gradle等环境导致
使用的Android studio 是3.5.3以上,gradle版本配置需对齐
可修改project/build.gradle的classpath为对应版本'com.android.tools.build:gradle:3.5.3',
gradle-wrapper.properties的distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
在app/build.gradle的android配置
android{ defaultConfig{ flavorDimensions "default" } }
十五、onAdFailed接口返回1003
是否使用的是oppo手机
同部手机某些广告类型有广告,有的广告类型没有广告,可以降低请求频率,可将appid、posId提交给商务查看
同部手机所有广告类型返回1003,可使用其他的手机验证,若其他手机还是不行,可联系商务处理
【建议】使用广告预览功能(路径:广告联盟-工具中心-广告预览),将手机IMEI号与广告位ID绑定生成预览信息,再进行测试广告
十六、调用插屏请求广告,正常返回但是调用show不能展示广告
确认是否是插屏的广告位,可能申请了插屏视频的广告位,所以出不了广告
十七、插屏广告数据已经返回onAdReady,但是调用展示没有出现广告
自查是否广告位为插屏视频的广告位,调用的是InterstitialAd
十八、出现激励视频看完没有回调onReward的情况
是否对落地页进行监听,落地页关闭才奖励之类,由于落地页并不是一定会打开,所以不能以此为依据
十九、unsatisfiedLinkError问题
日志相关:com.opos.cmn.nt.crypt.EncryptUtils
排查:
是否采用不支持的架构,目前支持的架构为arm64-v8a,armeabi-v7a,其他架构不支持
是否游戏类媒体依赖方式不支持依赖aar里面的so库,需要媒体解决这种依赖问题
二十、视频类返回10008的错误
isReady返回true,视频类load之后只能展示一次,若需展示新广告请重新加载
未在onAdReady广告数据返回之后调用,无法展示,需等待onAdReady之后再调用
二十一、提示provider don't find in AndroidManifest.xml
AndroidManifest通常是因为缺少Provider配置,可详细查看接入文档配置
AndroidManifest 声明的Provider 的authorities未按照要求配置
以上Q&A未能解答问题,可以按照以下操作
- 打开log过滤TAG为mob_ad复现下操作,提供下日志
- 日志打开方法:初始化SDK的时候打开SDK日志,
private void initSdk() {
InitParams initParams = new InitParams.Builder()
.setDebug(true)//true打开SDK日志
.build();
MobAdManager.getInstance().init(this, Constants.APP_ID, initParams);
}