android 趟坑记
又是一个伤感的故事,但阿古好像已经习以为常了。
大半年的辛苦又泡汤了,故事是这样。
帝都某高端小区,封闭局域网,做一个可视对讲+门禁的APP,之前那一版因为使用了商业代码,又不想花钱,于是找阿古换一个webrtc的对讲方案,
经过1个月的摸索,App终于可以跑了,试用好像没问题,几天后,用户抱怨视频总是卡断。
日,找原因,好像webrtc底层的摄像头资源没释放正确,加了异常重启处理,服务器端websocket加一分钟自动清token,数据库存储状态改成服务器端node存状态加快相应速度,继续试用。
1个月后,用户再抱怨,某一台中控经常崩溃,技术狗的末日从此来临,换主板,刷机,换显示屏,喇叭,网线。
呵呵,主板安卓系统版本不兼容,修改App,搞定,继续试。
1个月后,用户购买一批新安卓平板,App又猝,继续调优,发现webrtc跨网段太多,呼不通?这是什么鬼?webrtc真是搞死人。
做平板性能监控,擦,网速只有10几K怎么通话稳定,好像最大的bug被挖出了。
又是一个月,用户方大boss发话了,要结账?我们要又稳定又清晰的效果,否则别想结账。
狗都被你虐死了,MMP。
webrtc网速不稳定就会断,为了适应这垃圾网络环境(why),换方案,找了网上的某商业版,人家也是基于webrtc的改造版,算了,技术狗最讨厌承认技不如人,
心里想,要不是老子没时间陪你玩就自己搞一套了,哼。
又是几个不眠之夜,集成新视频方案,老版webrtc全替换。
坑如下:
1. 因为都是基于webrtc,老版的引用,jar,so文件全删掉,删干净
2. 新版本的lib包,so文件别忘了copy
3. 商业代码的demo是将监听写在了BaseActivity,如果和老版本代码冲突,只能将BaseActivity的功能分解到具体Activity里,视频对讲对象放在Application做成单例
4. 监听没加好是导致接收不到视频呼叫的原因,同上,demo里继承了BaseActivity,自己用如果没继承BaseActivity,要自己加在业务Activity里。
5. 如果想使用demo的ui效果,layout,资源文件要copy全,不copy全会导致百思不得其解的编译错误
6. compileSdkVersion 25 targetSdkVersion 25 compile 'com.android.support:appcompat-v7:25.3.1' 版本要一致 ,如果编译说找不到类库,就翻个墙试试看,或者换其他版本
7. AndroidManifest.xml 改加的uses-permission别忘了加,新加的activity别忘了定义
以为这就结束了?NO
windows服务器全换成linux,视频服务要供应商搭,除此之外, node服务,mysql,数据迁徙,自启动脚本重新配。
用户:伦家还没测试哦,有问题你啥都要管哦,吃定你咯。
我去年买了个表!!!
以上是一个android菜鸟的来自2018年底的牢骚。。
android 趟坑记的更多相关文章
- rocketmq搭建趟坑记
这个坑对小白来讲可能要趟很久才能过,我就是这样~~明明很简单的配置,搞了半天 我用的是rocketmq4.1.0,配置了jvm参数,都能正常启动,且能在线上运行demo,但是线下就是连不上 在conf ...
- Android MonoGame坑记
1.Content 加载声音API错误: 2.TouchPanel.GetState()属于抢占式的,用一次后面不能继续使用,否则状态尚属第一次: 3.TouchPanel 坐标来自于硬件本身: 4. ...
- Android项目开发填坑记-Fragment的onBackPressed
Github版 CSDN版 知识背景 Fragment在当前的Android开发中,有两种引用方式,一个是 Android 3.0 时加入的,一个是supportV4包中的.这里简称为Fragment ...
- Android项目开发填坑记-Fragment的onAttach
背景 现在Android开发多使用一个Activity管理多个Fragment进行开发,不免需要两者相互传递数据,一般是给Fragment添加回调接口,让Activity继承并实现. 回调接口一般都写 ...
- Android项目开发填坑记-so文件引发的攻坚战
故事的最初 我负责的项目A要求有播放在线视频的功能,当时从别人的聊天记录的一瞥中发现百度有相关的SDK,当时找到的是Baidu-T5Player-SDK-Android-1.4s,项目中Demo的so ...
- 【踩坑记】从HybridApp到ReactNative
前言 随着移动互联网的兴起,Webapp开始大行其道.大概在15年下半年的时候我接触到了HybridApp.因为当时还没毕业嘛,所以并不清楚自己未来的方向,所以就投入了HybridApp的怀抱. Hy ...
- UiAutomator2.0升级填坑记
UiAutomator2.0升级填坑记 SkySeraph May. 28th 2017 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.sk ...
- 浅谈html5 video 移动端填坑记
这篇文章主要介绍了浅谈html5 video 移动端填坑记,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 本文介绍了html5 video 移动端填坑记,分享给大家,具体 ...
- Appium+python自动化(十三)- 输入中文 - 一次填坑记(超详解)
简介 无论你在哪里,在做什么都会遇到很多坑,这些坑有些事别人挖的,有些是自己挖的.别人挖的叫坑人,自己挖的叫自杀,儿子挖的叫坑爹.因此在做app自动化道路上也不会是一帆风顺的,你会踩很多坑,这些坑和你 ...
随机推荐
- update与select关联执行效率问题
UPDATE fl_user_space u SET u.`course_count` = (SELECT COUNT(*) FROM fl_course c WHERE c.uid = u.uid) ...
- bzoj 1420 Discrete Root - 原根 - exgcd - BSGS
题目传送门 戳我来传送 题目大意 给定$k, p, a$,求$x^{k}\equiv a \pmod{p}$在模$p$意义下的所有根. 考虑模$p$下的某个原根$g$. 那么$x = g^{ind_ ...
- js的原型prototype究竟是什么?
Javascript也是面向对象的语言,但它是一种基于原型Prototype的语言,而不是基于类的语言.在Javascript中,类和对象看起来没有太多的区别. 1.什么是prototype: fun ...
- centos6配置网络常见问题
1. 启用网卡 查看网卡模块: lsmod 移除网卡:modprobe -r e1000 装载网卡: modprobe e1000 2. 配置网络 vim /etc/sysconfig/network ...
- 【修改缓存路径】修改Gradle缓存路径的几种方式
起因 Android Studio的gradle在缓存处理上有时候会莫名其妙的出问题,必要时需要手动删除缓存,然后重新编译.有时也有出于其他考虑指定gradle缓存路径. 方法1:修改gradle文件 ...
- BZOJ5479: tree
Description 给出一棵树,根节点为1 给出两个集合,集合由树上节点组成 从两个集合分别选出一个元素,求其LCA 问LCA的最大深度是多少 Input 第一行给出数据组数T 对于每组数据 第一 ...
- Tengine(nginx) 搭建Tomcat集群
好久没有更新学习的内容了,就是得强迫自己写点东西 记录自己的学习,才能更好的进步! Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和 ...
- Console的9种用法
Console的9种用法,1.显示信息的命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <!DOCTYPE html> <html> <he ...
- insert into table (a,b,c) select
本文为博主原创,转载请注明出处: 在项目中,需要统计数据,从基础表中的数据进行统计,并插入到汇总 表中, (1)语句形式为:Insert into Table2(field1,field2,...) ...
- 【转载】SeleniumIDE入门
http://www.open-open.com/lib/view/open1452488109558.html