本篇文章会就集成腾讯云IM碰到的部分问题进行汇总,问题如下:
问题1:方法数超过63500?
1、在build.gradle中添加:multiDexEnabled true(DefaultConfig中配置)
2、加入依赖‘compile ‘com.android.support:multidex:1.0.1’’
3、让应用的Application类直接使用或者继承MultiDexApplication
4、如果你想使用自定义的Application,又不想继承MultiDexApplication,那么可以在attachBaseContext方法里执行MultiDex.install(base)
问题2:so库的导入?
im so库目录问题描述:集成IM完成后,运行!可能会出现初始化失败问题,这时候一般都是配置出了问题,再好好对比下,对应jar包是否导入,清单文件中,是否都已配置;如果都没有问题,就很有可能是so库导入除了问题!(混淆出问题一般打包时候会出现各种找不到文件的报错)
以下是我项目的导入so库的代码;(注意了:五个目录下的so库,本人建议都导入。其实这五个目录里,内容是完全一样的,之所以导入全部,主要是为了适配不同手机cpu。一般so库都是这样,第三方库可能处理了,于是只需导入,armeabi、arm64-v8a和x86这几个so库。但是经本人亲测,大家还是都加吧T_T)
注:一般导入so库,常用的有两种方法:
1、项目切换到Android目录下,在app目录下创建一个JniLibs目录将so库放入其中,即可;
2、直接放在libs目录中,但需要在sourceSets中添加jniLibs.srcDirs = ['libs'];申明so库的位置,以上写法是声明,直接放在libs目录下。但如果放在libs子文件夹下,可以参考上面截图的写法;
分析:gradle文件中,配置jniLibs.srcDirs = ['libs'],这类型代码其实就是声明so库的具体位置;一般默认是jinLibs文件夹下,如果改放到libs目录下,都需要重新声明;
问题3:打包出错,各种找不到类的警告?
一般情况下,错误往往是因为配置出错,可能是资源导入有问题,检查so库和jar包
注:一般导入so库,常用的有两种方法:
一般情况下,错误往往是因为配置出错,可能是资源导入有问题,检查so库和jar包;
然后还有可能就是混淆规则添加有误;
#------------------腾讯云通信----------------------------------
-keepclass com.tencent.**{*;}
-dontwarncom.tencent.**
-keepclass tencent.**{*;}
-dontwarntencent.**
-keepclass qalsdk.**{*;}
-dontwarnqalsdk.**
#------------------小米推送----------------------------------
-keepclass com.sinosoft.nanniwan.im.imutil.MiPushMessageReceiver {*;}
-dontwarncom.xiaomi.push.**
#------------------华为推送----------------------------------
-keepclass com.huawei.android.**{*;}
-dontwarncom.huawei.android.**
-keepclass com.baidu.mapapi.**{*;}
-dontwarncom.baidu.mapapi.**
#------------------java.nio------------------------
-dontwarnorg.codehaus.**
-dontwarnjava.nio.**
-dontwarnjava.lang.invoke.**
然后就是对应的类需要添加相应的混淆规则;
问题4:覆盖安装后,如果不重新登录,消息页面显示空数据?
引发问题原因:覆盖安装之后,之前的登录信息,并未被清空,而是继续保持原来的登录状态;而我IM账号的登录,只是在登录之后做的处理(使用新增的接口,获取用户的uid),所以覆盖安装后,并没有获取到uid,也无法自动登录。以至于出现无法发送消息,发送消息时间显示异常等情况;
解决办法:在首页,判断是否登录,并判断是否有储存uid,如果有,根据是否需要登录,判断是否登录;如果没有,重新请求接口,进行存储并登录;
问题5:拍照,未兼容android7.0系统以及emoji表情显示问题?
见上一篇简书;
网友评论