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自动化道路上也不会是一帆风顺的,你会踩很多坑,这些坑和你 ...
随机推荐
- rpm command
rpm 实现程序管理 安装:-ivh ,--nodeps ,--replacepkgs 卸载: -e, --nodeps 升级: -Uvh -Fvh , --nodeps, --oldpackag ...
- weblogic10以下,许可证过期解决办法
weblogic10以后的版本已经不再使用license.bea的方式来进行软件授权,之前的历史版本oracle提供了一个免费的许可证更新. 1.首先进入oracle的官网下载地址http://www ...
- 弄懂linux shell对包含$的变量的执行过程?
参考: http://www.linuxidc.com/Linux/2012-04/58095.htm 在包含变量的命令中, 命令是怎么执行的呢? 首先, 它会原封不动的, 只是按原样替换变量的内容. ...
- SpringBoot 使用Sharding-JDBC进行分库分表及其分布式ID的生成
为解决关系型数据库面对海量数据由于数据量过大而导致的性能问题时,将数据进行分片是行之有效的解决方案,而将集中于单一节点的数据拆分并分别存储到多个数据库或表,称为分库分表. 分库可以有效分散高并发量,分 ...
- nohup 让进程在后台可靠运行的几种方法
1. nohup nohup 无疑是我们首先想到的办法.顾名思义,nohup 的用途就是让提交的命令忽略 hangup 信号. nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 即 ...
- P4213 【模板】杜教筛(Sum)(杜教筛)
根据狄利克雷卷积的性质,可以在低于线性时间复杂度的情况下,求积性函数前缀和 公式 \[ 求\sum_{i=1}^{n}\mu(i) \] 因为\(\mu*I=\epsilon\) 所以设\(h=\mu ...
- Unity3D学习笔记(三十七):顶点偏移和溶解
顶点偏移 沿向量方向偏移,沿自身坐标系方向偏移 沿法线方向偏移,球体放大,立方体拆分 Shader "Lesson/VFVertOffsetVertex" { Properties ...
- Hive初步使用、安装MySQL 、Hive配置MetaStore、配置Hive日志《二》
一.Hive的简单使用 基本的命令和MySQL的命令差不多 首先在 /opt/datas 下创建数据 students.txt 1001 zhangsan 1002 lisi 1003 wangwu ...
- CAS Client集群环境的Session问题及解决方案 不能退出登录
casclient源代码下载链接:https://github.com/apereo/java-cas-client cas官网链接:https://www.apereo.org/projects/c ...
- spring 配置ibatis和自动分页
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...