一、前言
最近看到有许多人在说根据环信官方文档导入 EaseUI 会出现各种错误,由于官方(此处和谐省略一万字), 顺便学学新的 add dependencies 方式,记录一下, Android Studio 3.3 add dependencies 方式又改了。
二、运行环境
Android Studio 版本 : 3.3 Canary 5
!
环信 SDK 版本 : easemob-sdk-3.5.0
三、导入 EaseUI
先新建个项目
下载 easemob-sdk 里面带有 EaseUI
导入这个 easeui
File -> New -> Import Module
选择 easeui 所在的路径
点击 Finish
导入之后会有红色的提示,四个都只是 WARNING,把四个 WANRNING 解决掉
第一个 WANRNING,是 Build Tools 的问题,Android Studio 3.3.0-alpha05 最低支持的 Build Tools 版本是 27.0.3 ,把 easeui 的 build.gradle 的 buildToolsVersion 改为 27.0.3 顺便把 compileSdkVersion 和 targetSdkVersion 也改为 27,同步一下 gradle,第一个 WANRNING 已经没了
后三个 WANRNING,是 AndroidStudio 3.0 之后的问题,
compile 改为 implementation 或 api,
implementation 和 api 是有区别的,implementation 是指这个导入的 Library 是 Module 内部使用的,别的 Module 导入当前这个 Module 就用不了当前 Module 导入的 Library 的东西,api 是指别的 Module 导入当前这个 Module 后仍然能够使用当前 Module 导入的 Library 的东西,
testCompile 改为 testImplementation,
androidTestCompile 改为 androidTestImplementation,
由于 easeui 的 libs 文件夹里有环信的 hyphenatechat_3.5.0.jar ,由于 app 里要用到 hyphenatechat 里的东西,所以 fileTree() 要用 api 而不是 implementation,改完后同步一下 gradle,剩下的三个 WANRNING 都没了
接下来 app 添加上 easeui 这个 Module ,在项目右键 Open Module Settings
选择 Dependencies,Modules 选择 app,Declared dependencies 点击 + 号
上面 step 1 的 easeui 打上勾,Step 2 选 implementation,点击 OK,再点 Apply 或 OK
由于 AndroidStudio 3.2 起开始推荐使用 androidx, 但 easeui 里用的是 android, 所以会报错,要么把 easeui 里的改为 androidx 要么不使用 androidx,改 easeui 的话那就太多要改的了,不使用 androidx 了,
打开 gradle.properties 注释掉 android.useAndroidX=true 和 android.enableJetifier=true
打开 app 的 build.gradle 也要改,compileSdkVersion, buildToolsVersion, targetSdkVersion 那些改和 easeui 一样的,dependencies androidx 的改为 android 的,改完同步一下 gradle, 由于去掉了 androidx, Activity 里的 AppCompatActivity 和 布局里的 ConstraintLayout 也要改为 android 的而不是 androidx 的
看起来好像没什么问题了,先运行一下,
出问题了,support v4 包没有 AsyncTaskCompat 这个类了,打开 EaseChatRowImage.java 这个类
去掉 AsyncTaskCompat,改直接执行 AsyncTask ,
再运行一下,可以运行起来