Android SDK 导入


集成前准备

下载 SDK

环信官网下载环信 SDK。

注:考虑到开发者需求不一样,在下载的 SDK 中,提供了两个不同的 jar 包:

  • 一个是 libs 下带实时语音功能和实时视频功能的 jar 包和 so 文件。
  • 如果你不需要实时语音、实时视频功能,那就直接用 libs.without.audio 文件夹下的 jar 包及 so 文件。

到此您已经下载好了 SDK,下面开始学习 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 版本是向下兼容的

SDK目录

2.1.5之前的jar包和.so文件

以上为 2.1.5 之前的 jar 包和 .so 文件

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.** {*;}

上一章节:服务端集成