这几天碰到一个很奇葩的问题,由于以前也没有用过融云的SDK,算是第一次用。然接到的任务就是集成下融云的IMLib库,当时想的这能有多难,不分分钟搞定的节奏么?结果让人大跌眼镜,搞了两天不但没解决,反而一点头绪都没有。然后是网上各种找资料,百度啊,谷歌啊,通通试了个遍,毫无用处。而且还有些更蹊跷的,就是一开始,程序跑起来连io.rong.push进程都是没有的,这个后面通过一通处理,这个进程倒是能出来了,但是ipc进程还是没有,大家都知道这是融云的通信进程,这玩意要是起不起来,那是没法通信的。所以我那个急啊,烦躁啊真心地,特别郁闷。周六回到家都没精打采,整个脑袋都在想这到底是哪里的问题,因为网上说的所有的办法都试了,融云的资料库都看了几个来回,依然还是出不来。但是,我写的demo或者示例程序,一点问题都没有,唯独集成到我们自己的项目就起不起来,真的感觉邪门。有点罗嗦,哈哈~

1、现象

没办法,即然没有思路,那只能一步步来,打log,debug调试。我最开始想到的就是从最简单的途径入手,那就是,我只用一个Application 去做初始化,然后在一个页面去调RongIMClient.connect(因为token用的测试的,后台直接生成),但即使是这样了,在我们的项目中还是不行,不行的现象就是onTokenIncorrectonSuccessonError 三个回调都不会走,服务器更加是连不上了。中间把融云的 log 都打出来看了下,发现有这样两句(图中1):

然后点击链接服务器或者点击发送消息,就会出现上图2中所示的日志,其中消息发送时的错误很明确:IPC_DISCONNECT。

2、调试

还是那句话,没有好的思路只能一步步来,那就直接调试吧,跟着 connect 方法一步步往里走,走到RongIMClient类的connectServer(final String token, final boolean isReconnect, RongIMClient.ConnectCallback callback)方法里的时候看到了如下图所示的结果:

this.mLibHandler == null的时候,请看如下截图: 他会执行initBindService()方法,代码如下:

private void initBindService() {Intent intent = new Intent(this.mContext, RongService.class);intent.putExtra("appKey", this.mAppKey);intent.putExtra("deviceId", this.mDeviceId);if (this.mLibHandler != null) {this.initReceiver();} else {try {this.mContext.bindService(intent, this.mAidlConnection, 1);} catch (SecurityException var3) {RLog.e("RongIMClient", "initBindService SecurityException");var3.printStackTrace();}}}
复制代码

一直到最后的this.mContext.bindService(intent, this.mAidlConnection, 1);就算执行完了,这也是为什么三个回调都没有结果的原因。 那么 mLibHandler 究竟是个什么鬼呢?我们进去看看,进来是这样的:

public interface IHandler extends IInterface

他是一个接口,接着来:

/*** Base class for Binder interfaces.  When defining a new interface,* you must derive it from IInterface.*/
public interface IInterface
{/*** Retrieve the Binder object associated with this interface.* You must use this instead of a plain cast, so that proxy objects* can return the correct result.*/public IBinder asBinder();
}
复制代码

里面只定义了一个asBinder()方法,返回一个IBinder实例,IBinder是个什么东东,熟悉 ipc 的应该会了解,这里就不详说了,那么到这里我们大致明白了,为啥没反应了,因为这个mLibHandler就是负责真正去连接服务器的东东,那如果他为空自然是没法连成功了。

3、尝试

这里面有个很尴尬的地方,那就是虽然上面分析出了为啥连不上服务以及回调不成功的原因,但我依然不知道如何解决这个问题。所以啊,这中间试了一堆的网上办法,什么so库没集成成功啊,tar版本要小于24啊,什么libsqlite.so文件没有添加啊,通通没有效果。如图:

所以,老办法来了,我拿着我项目的配置表去一个空项目挨个试试看,死马当活马医呗,然后奇迹发生了,一导入自己项目的工程文件,原本能起来的项目也出问题了,有戏,这说明问题能复现,那就先试着注释掉几个可能会引起冲突的包,发现还是一样,那就看下那些可能会影响到融云ipc进程的东东,这时候有个很熟悉的家伙进入了我的视线:

        ndk {//设置支持的SO库架构abiFilters 'armeabi', 'x86', 'armeabi-v7a', 'arm64-v8a'}
复制代码

对了,没错,就是楼上那个大兄弟,当我把他注释后,出现了传说中的ipc进程,如图:

然后测试也是ok 的,如图: 发送消息出来日志也变了,如图: 这个问题很奇怪,但需要说明的是,融云我是以第三方库的方式引入的,然后在 app 的 gradle 配置文件里去写的 ndk 配置,所以当我把 app 的 ndk 配置注释掉之后,在融云的库中设置 ndk 配置的时候使用是没有问题的。

4、结尾

写的很乱,我通常是想说的太多,结果是想到什么就写什么,所以,尝尝不知道有没有写清楚,o(∩_∩)o 哈哈~ 我只能说这个问题很奇葩,而且网上没有找到一例跟这个相关的资料,然后,融云的工单系统还非得实名认证,晕死~(吐槽下),其次,加的好多个融云QQ交流群,直到现在也没给我通过~,信春哥,得始终@

集成融云没有ipc进程的天坑相关推荐

  1. 项目中集成融云即时通讯

    http://blog.csdn.net/qq_28759359/article/details/52689948 项目中集成融云IM,能够单聊,离线能够收到消息,有聊天列表. 一我使用的是融云. I ...

  2. iOS 关于集成融云IM的一些常用方法

    容我磨叽一下 即使我也知道看这篇文章的人是不会看的,但是我还是想说啊,融云你们把文档好好写一下啦,APP什么的作为demo真的很鸡肋啊. 步入正题 这篇文章不是介绍集成融云的各种前期准备的(就是怎么注 ...

  3. 集成融云 SDK 怎么实现多端同步未读数

    最近在集成融云 SDK 的时候,碰到了一个跟未读数有关的问题,现象是这样的: 比如我在其中 Web 端已经清除了某个会话的未读数然后退出,再换个设备登入,这个时候未读数还有,并没有清除掉,我就纳闷了, ...

  4. android讨论功能,集成融云Android SDK实现在群聊/讨论组中@人的功能

    集成融云Android SDK实现在群聊/讨论组中@人的功能 可以确定的是融云SDK本身不提供@的功能,需要自定义实现. 在实现这个功能时,基本模仿微信的做法: 在列表中显示有人@了你 通知显示有人@ ...

  5. 融云发送图片消息_Web 端集成融云 SDK 如何发送正确图片消息给移动端展示?

    Web 端集成融云 SDK 如何发送正确图片消息给移动端展示? 前言 Web 端使用融云的即时通讯 SDK 在发送图片消息给移动端的时候,移动端一般会收到一个缩略图数据和展示高清图片地址,但是往往 W ...

  6. 快速集成融云SDK– Android Studio

    现在很多应用都加入了即时通讯功能(客服等),选择第三方的SDK比较省事快捷,这里就介绍一下集成融云SDK时遇到的一些问题. 这个是官网的集成指南:http://www.rongcloud.cn/doc ...

  7. ios 融云 重写对话列表_iOS集成融云SDK part 1 小记

    之前虽然稍微了解过即时通讯方面的内容,但是一直没有怎么去做过聊天部分的.这次是刚刚使用融云,做一下记录. 关于融云SDK集成的具体步骤,我都是参考以下这些文章(很多图片都是直接从这些地方拿的,我真是太 ...

  8. 分享一些Android集成融云音视频通话遇到的问题

    最近应公司需要加入音视频聊天的功能,领导也没吱声就跟融云那边把商务谈好了,让我开始做,之前也没接触过这方面的东西,查阅资料发现音视频这块都是比较笼统的大致介绍一下,最后也是坎坷了一番完成了任务,接下来 ...

  9. Android超简单集成融云IM单聊

    最近项目中需要集成即时通讯,于是就选择了融云,按照步骤一步一步来还是很简单的,我做的只是单聊,(可支持发送文字.表情.图片.语音)下面记录一下 先上图 步骤: 一,去融云官网注册账号然后创建应用,应用 ...

  10. 30 分钟集成融云 IM 即时通讯

    最近公司要做一个社交 app,对于时间就是金钱的当今社会,招聘大量人才去搭建通讯系统肯定是不划算的,花费人力物力财力做出来的 app,可能还没人用.那就瞎了.所以毋庸置疑,一拍即合,用第三方的.就开始 ...

最新文章

  1. mysql while 游标_mysql 游标 loop while 的使用
  2. c# list集合根据某个字段去重_完美解决c# distinct不好用的问题
  3. IDT 信息设计工具使用
  4. 想知道黑苹果什么味道?来咬一口尝尝~
  5. [转]自用类库整理之SqlHelper和MySqlHelper
  6. GitLab 安装笔记
  7. java学习(4):第一个java程序
  8. .html页面缓存问题
  9. 数据库 case wen条件语句的运用
  10. 腾讯Bugly工具介绍节选
  11. 数据结构与算法-表(单链表 循序表 )
  12. 低通滤波器的一阶RC电路模型
  13. 关于oxc000007b错误的解决办法
  14. 中大新华计算机科学与技术,专业评估|信息科学学院电子信息科学与技术、计算机科学与技术、软件工程、数字媒体技术专业评估考察会议举行...
  15. 小米电视4a系统android,小米电视4A请别糟蹋“人工智能”这几个字!
  16. python中list的意思_python中的list函数什么意思
  17. OneNav简约PHP导航书签源码
  18. unity demo免费下载:第三人称镜头移动+瞄准线+发射弧线球打击方块(方块可以识别受击方向)demo
  19. 人力资源机器(Human Source Machine) 1-10
  20. 优秀自我简介200字_优秀大学生自我介绍200字

热门文章

  1. nginx+php简单配置环境
  2. 软件工程项目之Windows Phone Application的一个设想
  3. JS 回调(CallBack)
  4. eXpressApp Framework 8.1.5 released on 27 Jue 2008 and What'a New
  5. 和商简智能CEO关于APS的聊后感
  6. 【matlab】从图片中截取矩形区域(手工选取/标记在原图上/截取矩形区域并保存)
  7. 图灵专栏微信小程序上线
  8. ENVI学习总结(四)——图像正射校正
  9. Python 读取MODIS叶绿素-a浓度.nc文件
  10. ArcGIS操作:裁切