====== Android SDK 介绍及导入 ======
----
===== Android SDK 介绍 =====
环信 SDK 为用户开发 IM 相关的应用提供的一套完善的开发框架。包括以下几个部分:
{{ :im:200androidclientintegration:image004.png?nolink |开发框架}}
* SDK_Core 为核心的消息同步协议实现,完成与服务器之间的信息交换。
* SDK 是基于核心协议实现的完整的 IM 功能,实现了不同类型消息的收发、会话管理、群组、好友、聊天室等功能。
* EaseUI 是一组 IM 相关的 UI 控件,旨在帮助开发者快速集成环信 SDK。
开发者可以基于 EaseUI 或者环信 SDK 开发自己的应用,前者因为把消息的发送接送等功能封装到了内部,集成时开发者不需要太关心消息是怎么发送、怎么接收等逻辑。请查阅[[im:200androidclientintegration/135easeuiuseguide|EaseUI使用指南]]。
SDK 采用模块化设计,每一模块的功能相对独立和完善,用户可以根据自己的需求选择使用下面的模块:
{{:im:200androidcleintintegration:sdk.png|模块化设计}}
* EMClient: SDK 的入口,主要完成登录、退出、连接管理等功能。也是获取其他模块的入口。
* EMChatManager: 管理消息的收发,完成会话管理等功能。
* EMContactManager: 负责好友的添加删除,黑名单的管理。
* EMGroupManager: 负责群组的管理,创建、删除群组,管理群组成员等功能。
* EMChatroomManager: 负责聊天室的管理。
**注意**:如果您是从 SDK2.x 升级到 3.0,可以参考[[im:200androidclientintegration:140upgradetov30|环信 SDK2.x 到 3.0 升级文档]]。
===== 视频教程 =====
以下是SDK集成参考视频,您可以通过视频学习如何集成环信SDK。
* Android_SDK集成:http://www.imgeek.org/video/44
===== Android SDK 导入 =====
==== 集成前准备 ====
[[im:000quickstart:10register|注册并创建应用]]
==== 手动复制jar包及so导入 ====
到[[http://www.easemob.com/download/im|环信官网]]下载环信 SDK。
考虑到开发者需求不一样,在下载的 SDK 中,提供了两个不同的 jar 包:
* 一个是 libs 下带实时语音功能和实时视频功能的 jar 包和 so 文件。
* 如果你不需要实时语音、实时视频功能,那就直接用 libs.without.audio 文件夹下的 jar 包及 so 文件。
==== 通过gradle远程链接导入 ====
首先在你的项目根目录''build.gradle''文件的''allprojects->repositories''属性下加入远程库地址
maven { url "https://raw.githubusercontent.com/HyphenateInc/Hyphenate-SDK-Android/master/repository" }
然后在你的module的''build.gradle''里加入以下代码
android {
//use legacy for android 6.0
useLibrary 'org.apache.http.legacy'
}
dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
//Optional compile for GCM (Google Cloud Messaging).
compile 'com.google.android.gms:play-services-gcm:9.4.0'
compile 'com.hyphenate:hyphenate-sdk:3.3.0'
}
如果想使用不包含音视频通话的sdk,用''compile 'com.hyphenate:hyphenate-sdk-lite:3.3.0''';
SDK版本号参考[[im:200androidclientintegration:160androidreleasenote|Release Note]]
==== SDK 目录讲解 ====
从官网上下载下来的包,解压后内容如下:
{{:im:200androidclientintegration:sdk_dir.png?nolink|SDK目录}}
在这里主要介绍后面四个文件夹内容:
* doc 文件夹:SDK 相关 API 文档
* examples 文件夹:ChatDemoUI3.0(Demo,依赖 EaseUI 库)、EaseUI
* libs.av 文件夹:包含IM和实时音视频功能所需要的 jar 和 so 文件
* libs.lite 文件夹:无实时语音、实时视频功能的 SDK 包,如果项目中只用到聊天功能,可以把项目里的 jar 和 so 文件替换成此文件夹里的文件
==== 第三方库介绍 ====
=== SDK 中用到的第三方库 ===
* android-support-v4.jar:这个可以说是每个 APP 中都是不可缺少的 jar 包,这里不多赘述
* google-play-services.jar:GCM 的 jar 包,不需要 GCM 推送可以删除
* org.apache.http.legacy.jar:Android6.0 中默认移除了 httpclient 的代码,用这个库兼容,建议不要删除,否则在 6.0 系统中,SDK 会有问题
=== EaseUI 中用到的第三方库 ===
* glide-3.6.1.jar:图片处理库,显示用户头像时用到
* BaiduLBS_Android.jar:百度地图的 jar 包,相关 so 还有 libBaiduMapSDK_base_v3_6_1.so、libBaiduMapSDK_map_v3_6_1.so、libBaiduMapSDK_util_v3_6_1.so 及 liblocSDK6a.so。如果不用百度可以把这些删除掉,删除掉后项目会报错,修改相应的报错(报错的代码很少,很容易就修改完成)
=== Demo 中用到的第三方库 ===
* android-support-multidex.jar:APP 总方法数超过 64k 时,需要用这个库做分包处理,可以删除
* bolts-android-1.2.0.jar、Parse-1.9.4.jar:Demo 中的用户信息存储在 Parse,这两个库是 Parse 所需要的库,开发者如果没用 Parse 存储,不要复制到自己项目中
==== 配置工程 ====
=== 导入 SDK ===
在自行开发的应用中,集成环信聊天需要把 libs 文件夹下的 jar 及 so 文件复制到你的项目的 libs 文件夹相应位置,如果不需要语音和视频通话功能,导入libs.without.audio 下的文件即可。
{{:im:200androidcleintintegration:3.0sdk_dirs2.png?nolink|导入SDK}}
=== 配置信息 ===
在清单文件 AndroidManifest.xml 里加入以下权限,以及写上你注册的 AppKey。
权限配置(实际开发中可能需要更多的权限,可参考 Demo):
关于 EASEMOB_APPKEY 对应的 value 获取,在创建应用后,申请 AppKey 并进行相关配置。(环信 Demo 中 AppKey 为 easemob-demo#chatdemoui)
如果对生成的apk大小比较敏感,我们建议使用jar方式,并且手工拷贝so,而不是使用Aar,因为Aar方式会把各个平台的so文件都包含在其中。采用jar方式,可以仅保留一个ARCH目录。如果使用lite版,建议仅保留armeabi;如果使用音视频版,建议仅保留armeabi-v7a。这样虽然在对应平台执行的速度会降低,但是能有效减小apk的大小。
===== APP 打包混淆 =====
在 ProGuard 文件中加入以下 keep。
-keep class com.hyphenate.** {*;}
-dontwarn com.hyphenate.**
----
上一章节:[[im:100serverintegration:10intro|服务端集成]]
下一页:[[im:200androidclientintegration:30androidsdkbasics|Android SDK 基础功能]]