Android SDK 导入
集成前准备
下载 SDK
到环信官网下载环信 SDK。
注:考虑到开发者需求不一样,在下载的 SDK 中,提供了两个不同的 jar 包:
- 一个是 libs 下带实时语音功能和实时视频功能的 jar 包和 so 文件。
- 如果你不需要实时语音、实时视频功能,那就直接用 libs.without.audio 文件夹下的 jar 包及 so 文件。
到此您已经下载好了 SDK,下面开始学习 SDK 的集成使用吧!
SDK 目录讲解
从官网上下载下来的包,解压后内容如下:
在这里主要介绍后面四个文件夹内容:
- doc 文件夹:SDK 相关 API 文档
- examples 文件夹:ChatDemoUI(老的 Demo,不推荐使用)、ChatDemoUI3.0(环信demo,依赖 EaseUI 库)、EaseUI,2.2.9版本中加入红包库redpacketlibrary,位置在ChatDemoUI3.0根目录下,导入demo查看的时候也需要导入此红包library。
- libs 文件夹:包含IM和实时音视频功能所需要的 jar 和 so 文件
- libs.without.audio 文件夹:无实时语音、实时视频功能的 SDK 包,如果项目中只用到聊天功能,可以把项目里的 jar 和 so 文件替换成此文件夹里的
配置工程
导入 SDK
在自行开发的应用中,集成环信聊天需要把 libs 文件夹下的 easemobchat_2.1.6.jar 和 armeabi 目录导入到你的项目的 libs 文件夹底下,如果不需要语音和视频通话功能,导入 libs.without.audio 下的 jar 文件即可。jar 名字的后面的 2.1.6 可能会跟你下载的不一致,这是版本号,以实际为准。如果集成过 2.1.6 之前 SDK 的开发者,建议更新新版本,新版本有很多的优化,具体请看更新日志。
注:SDK 版本是向下兼容的
以上为 2.1.5 之前的 jar 包和 .so 文件
以上为 2.1.5 之后的 jar 包和 .so 文件(里面包含了语音和视频通话功能)
配置信息
在清单文件 AndroidManifest.xml 里加入以下权限,以及写上你注册的 AppKey。
权限配置:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="Your Package"
android:versionCode="100"
android:versionName="1.0.0">
<!-- Required -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name="Your Application">
<!-- 设置环信应用的AppKey -->
<meta-data android:name="EASEMOB_APPKEY" android:value="Your AppKey" />
<!-- 声明sdk所需的service SDK核心功能-->
<service android:name="com.easemob.chat.EMChatService"
android:exported="true"/>
<service
android:name="com.easemob.chat.EMJobService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="true"
/>
<!-- 声明sdk所需的receiver -->
<receiver android:name="com.easemob.chat.EMMonitorReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package"/>
</intent-filter>
<!-- 可选filter -->
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
</application>
</manifest>
关于 EASEMOB_APPKEY 对应的 value 获取,在创建应用后,申请 AppKey 并进行相关配置。(环信 demo 中 AppKey 为 easemob-demo#chatdemoui)
APP 打包混淆
在 ProGuard 文件中加入以下 keep。
-keep class com.easemob.** {*;}
-keep class org.jivesoftware.** {*;}
-keep class org.apache.** {*;}
-dontwarn com.easemob.**
#2.0.9后的不需要加下面这个keep
#-keep class org.xbill.DNS.** {*;}
#另外,demo中发送表情的时候使用到反射,需要keep SmileUtils
-keep class com.easemob.chatuidemo.utils.SmileUtils {*;}
#注意前面的包名,如果把这个类复制到自己的项目底下,比如放在com.example.utils底下,应该这么写(实际要去掉#)
#-keep class com.example.utils.SmileUtils {*;}
#如果使用EaseUI库,需要这么写
-keep class com.easemob.easeui.utils.EaseSmileUtils {*;}
#2.0.9后加入语音通话功能,如需使用此功能的API,加入以下keep
-dontwarn ch.imvs.**
-dontwarn org.slf4j.**
-keep class org.ice4j.** {*;}
-keep class net.java.sip.** {*;}
-keep class org.webrtc.voiceengine.** {*;}
-keep class org.bitlet.** {*;}
-keep class org.slf4j.** {*;}
-keep class ch.imvs.** {*;}
上一章节:服务端集成
下一页:Android SDK 基础功能