异常场景
更新时间:2025-06-01 07:41:02

[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.

    
    
  • 参考解决方案

    • 版本升级至

    image-aeed418624c74a2e95b3b526fd5619e0

    • 可以把demo的proguard-rules.pro文件复制过去,混淆开起来试试

    image-0c8eebad62c1402dae3a87c07436fd80

    image-20240912091139302

    • minSdkVersion = 24并添加 android:extractNativeLibs="true"

    image-9bd2c43545ce4e32b21d2dafbe88b80e

五、邀请联系人,跳转至第三方页面,返回时崩溃

  • 问题描述

    • 跟问题三类似
    • 按照问题三改完出现了NoClassDefFoundError报错,报错信息与lifecycle相关
  • 参考解决方案

    • 参考问题三

    • 问题原因:依赖的androidx的一些库版本不同,我们的组件依赖的androidx.appcompat:appcompat:1.5.1(编译版本需要>=32),客户依赖的其他的版本,最终lifecycle相关的库版本不配套,出现NoClassDefFoundError报错

    • 方案1:api 'androidx.appcompat:appcompat:1.5.1',对应编译版本也要升级到32以上

    • 方案2:重写点击事件时注释掉跳转我们的选人界面部分的代码,不去跳转,直接走客户自己的逻辑

      image-a29eb9fa755d4e49bef3d760b548ddb1

六、加入会议报错

  • 问题描述

    • image-20240912101449201
  • 参考解决方案:

    • gradle.properties中补充
    android.useAndroidX=true
    android.enableJetifier=true
    

七、sdk日志无法打印

  • 参考解决方案

    YealinkSdk.initSdk(context, authParam, new SdkInitListener() { @Override public void onSuccess() { //初始化成功后设置允许日志打印 YealinkSdk.getSettingService().setEnableConsole(true); } });

    
    

### 八、编译报错属性找不到

  • 问题描述

    • image-20240912104006895
  • 参考解决方案

    • 编译版本compileSdkVersion需要>=31

九、sdk打包过大

  • 问题描述

    • 正常打包增量是150M左右,客户打包后多了300M
  • 参考解决方案

    • 补充android:extractNativeLibs="true"

    image-9bd2c43545ce4e32b21d2dafbe88b80e

十、App被禁用

  • 问题描述

    • 提示App被禁用,token is empty
  • 参考解决方案

    • 确认鉴权信息(AppId, AppSecret)、服务器地址是否设置
    • 通常原因是在某些地方又重复设置了服务器地址setDispatcherHost比如未登录入会、appid登录,导致服务器地址被覆盖了,后面再进行其他操作就会有问题
    • 建议统一在YealinkSdk.initSdk时将这三个信息传入,后续就不改动了
    • 时序问题
    • YealinkSdk.initSdk()中包含了鉴权的步骤,但是鉴权需要一点点时间,有时候可能会出现初始化结束,但是鉴权还未结束的情况;解决方案是在YealinkSdk.initSdk()成功后再鉴权一次YealinkSdk.getAccountService().sdkAuth(),等鉴权成功的回调后再进行业务操作
本页目录