[TOC]
常见异常场景
一、无法打开摄像头
-
问题描述
- 发起视频会议,开启视频默认关闭,操作视频会议页面中的聊天功能或者成员列表时,摄像头会自动打开 视频按钮点击无反应
-
参考解决方案
//一般是初始化问题 public class MyApp extends Application {
@Override public void onCreate() { super.onCreate(); ARouter.init(this); AppWrapper.getInstance().init(this); //ActivityStackManager需要尽早初始化 ActivityStackManager.getInstance().init(this); }
}
-
二、开启会议 点击邀请 点击邀请企业应用闪退
-
问题描述
开启会议 点击邀请 点击邀请企业应用闪退 日志如下: Caused by: android.view.InflateException: Binary XML file line #19 in com.yealink.sdk.demo.develop:layout/bs_layout_title_bar: Error inflating class
Caused by: android.view.InflateException: Binary XML file line #12 in com.yealink.sdk.demo.develop:layout/bs_activity_status_bar: Error inflating class
-
-
参考解决方案
- 缺少一些自定义属性定义,直接使用CloudYealinkTheme主题或自定义一个主题继承CloudYealinkTheme
<style name="DemoTheme" parent="CloudYealinkTheme"></style>
<application ... android:theme="@style/DemoTheme" tools:replace="android:theme"> </application>
三、开启会议 点击更多 点击聊天应用闪退
-
问题描述
开启会议 点击更多 点击聊天应用闪退 日志如下: Caused by: java.lang.ClassNotFoundException: com.yealink.ylkotlin.KtStatusBarActivity Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lkotlinx/coroutines/CoroutineScope
-
-
参考解决方案
-
查看ylkotlin.aar是否缺失
-
补充依赖
api "org.jetbrains.kotlin:kotlin-stdlib:1.5.32" api "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.32" api "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2"
-
四、打包报错
- 问题描述
- 打包报错
AbstractMethodError
- 打包报错
- 参考解决方案
gradle.properties
补充android.enableDexingArtifactTransform.desugaring=false
-
问题描述
打release包时报错 日志如下: com.android.tools.r8.errors.b: Unexpected attempt to get register for a value without a register in method
void com.yealink.utils.at.AtManager$Companion.inputAtAll(com.yealink.base.view.textview.YLEmojiEditText, boolean)
.Execution failed for task ':app:dexBuilderRelease'.
Could not resolve all files for configuration ':app:detachedConfiguration3'. Failed to transform jetified-ylim-core-runtime.jar to match attributes {artifactType=ext-dex-dexBuilderRelease, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}. > Execution failed for DexingExternalLibArtifactTransform: C:\Users\Administrator.gradle\caches\transforms-2\files-2.1\9168b0fe4db3c5c56fb5b55c29e4bf5a\jetified-ylim-core-runtime.jar. > Error while dexing.
-
-
参考解决方案
- 版本升级至
- 可以把demo的
proguard-rules.pro
文件复制过去,混淆开起来试试
- minSdkVersion = 24并添加
android:extractNativeLibs="true"
五、邀请联系人,跳转至第三方页面,返回时崩溃
-
问题描述
- 跟问题三类似
- 按照问题三改完出现了
NoClassDefFoundError
报错,报错信息与lifecycle相关
-
参考解决方案
-
参考问题三
-
问题原因:依赖的androidx的一些库版本不同,我们的组件依赖的
androidx.appcompat:appcompat:1.5.1
(编译版本需要>=32),客户依赖的其他的版本,最终lifecycle相关的库版本不配套,出现NoClassDefFoundError
报错 -
方案1:
api 'androidx.appcompat:appcompat:1.5.1'
,对应编译版本也要升级到32以上 -
方案2:重写点击事件时注释掉跳转我们的选人界面部分的代码,不去跳转,直接走客户自己的逻辑
-
六、加入会议报错
-
问题描述
-
参考解决方案:
- 在
gradle.properties
中补充
android.useAndroidX=true android.enableJetifier=true
- 在
七、sdk日志无法打印
-
参考解决方案
YealinkSdk.initSdk(context, authParam, new SdkInitListener() { @Override public void onSuccess() { //初始化成功后设置允许日志打印 YealinkSdk.getSettingService().setEnableConsole(true); } });
-
### 八、编译报错属性找不到
-
问题描述
-
参考解决方案
- 编译版本
compileSdkVersion
需要>=31
- 编译版本
九、sdk打包过大
-
问题描述
- 正常打包增量是150M左右,客户打包后多了300M
-
参考解决方案
- 补充
android:extractNativeLibs="true"
- 补充
十、App被禁用
-
问题描述
- 提示App被禁用,token is empty
-
参考解决方案
- 确认鉴权信息(AppId, AppSecret)、服务器地址是否设置
- 通常原因是在某些地方又重复设置了服务器地址
setDispatcherHost
比如未登录入会、appid登录,导致服务器地址被覆盖了,后面再进行其他操作就会有问题 - 建议统一在YealinkSdk.initSdk时将这三个信息传入,后续就不改动了
- 时序问题
YealinkSdk.initSdk()
中包含了鉴权的步骤,但是鉴权需要一点点时间,有时候可能会出现初始化结束,但是鉴权还未结束的情况;解决方案是在YealinkSdk.initSdk()
成功后再鉴权一次YealinkSdk.getAccountService().sdkAuth()
,等鉴权成功的回调后再进行业务操作