http://qa.blog.163.com/blog/static/1901470022014817936189/
还记得上次我们网易云音乐做大改版时,最后播放器界面适配每一款机型实在是个大工程,不同的系统,不同的分辨率,不同的尺寸都会有不一样的表现,为了达到完美的结果,需要花费很大的精力,于是就有了下面这一张成果图:
但是实际上,这只是Android端产品开发的冰山一角,以下在实际工作中总结出一些常见的“坑”。
1、ROM坑 - 毫无疑问,这是所有坑中的天坑。
“我有一个帅气的锁屏”
对于一款音乐播放器来说,4.x系统默认提供了音乐播放器显示在锁屏的接口,但是很多ROM却做了修改。
比如:使用MIUI某些版本锁屏播放时,控制锁屏界面暂停,会调用本地音乐播放器播放里面的音乐。后来MIUI做了升级,但是还是不能将其他app播放的音乐信息正确显示在锁屏。有时候用户来反馈,我们也很无奈(难道只能以暴制暴,做一个锁屏界面盖住他们吗?)
比如:在4.4某些手机上,锁屏界面点击下一首,歌手名不会立即显示当前播放的歌曲,而是上一首的。这也倒不是ROM的问题,的确是4.4系统的BUG,暂时还无法解决。
“我有一个聪明的系统管理机制”
Android客户端的开放诞生了很多“好心”产品,比如360、LBE之类,然后很多互联网厂商在叠加需求的驱使下,开始将这些流行应用集成到ROM中,典型的就有小米集成了LBE的系统管理,后来华为等厂商也开始跟进。
比如:(某机型)wifi网络下灭屏播放在线歌单,播放一段时间后自动停止,点亮屏幕后则自动继续播放。典型的“为你省电又省心”的类型,会在灭屏时关闭网络,导致播放在线歌单无法缓冲,这类ROM即使你修改了wifi休眠策略后还会这么干
比如:Flyme某些版本,灭屏播放已下载的歌曲,可能出现间隔时间较长的情况。这个问题最后确认系统在灭屏一段时间后会降低CPU频率,处理事件间隔延长,导致实际产品体验不佳的情况。后来程序猿只能用一些“猥琐”的方式来解决这个问题。
“我的通知栏展现了我们设计师的审美”
无一例外,很多厂商会对通知栏进行修改,对于我们云音乐需要在通知栏显示歌曲播放状态。
比如三星S5、OPPO、Moto X等机型在通知栏点击上一首暂停下一首进行切换时,则可能出现显示错误或无法响应的问题
另外还有些厂(Hua)商(Wei),则喜欢将通知栏底色弄成全白色,这样我们原本PNG图上的白字在这种通知栏上就直接迷失,用户反馈给我们说为什么你们通知栏上没有字,我们只能哭笑不得,然后乖乖优化
“Actionbar修改”
奇怪的是有些厂商还会对原生的actionbar做一些修改,实际上发现的有miui某版本、vivo和华为的一些机型有这个问题,导致actionbar上的返回键不能使用,导致开发需要换一种方式进行实现。
还有一些2.3的机子上,点击actionbar左上角上的云音乐icon,会最小化云音乐。
还有一些4.4的机子上,某些activity上点击actionbar左上角返回时会重复刷新该界面
“文件系统权限”
大多数移动产品都需要使用到本地文件的读写权限,然后有很多厂商对文件系统有各自的定制,导致我们的产品会有一些水土不服的情况。
常见的比如有在三星S4上发现SD卡为"sdcardfs"格式的,不能扫描到里面的歌曲。这是因为我们程序在sd卡文件类型列表中还没有将这类格式列入。这一方面需要我们开发时能获知到更多的相关知识,另外一方面需要及时识别这类问题并迅速修复(毕竟新的东西总是在来临)
还有发现Moto X 升到4.4版本后,本地音乐扫描时会扫描出很多多余的音乐文件(legacy文件夹下),这也是由于原生文件系统改版后导致的结果,需要我们的开发针对这种情况去做过滤。
“接口提供问题”
如小米手机,默认播放器支持播放WMA,但是我们调用默认player却不能播放,这会导致用户扫描进来的歌曲却不能播放。
“Webview问题”
在Webview上除了2.3和4.x系统的区别之外,有些手机比如Sony很多机型在Webview上和其他手机也有一些区别,会导致调用MP3播放的时候无效。
“其他”
比如Flyme的Smartbar的兼容,MIUI旧版本Menu键的兼容。(真是两座大山,相信很多同学会赞同)
2、系统管理软件坑
似乎国人使用电脑或手机都有一个习惯,拿到手机后第一时间装个杀毒软件吧,再装个安全大师清理软件吧,这种安全意识和清理意识值得鼓励,但是却会因为这些管理软件带来很多的问题。
常见的有,LBE安全大师、360手机安全卫士、腾讯手机管家、省电软件等。他们大多干着一些杀病毒、杀木马、监控流量、清空间、清内存等工作,最重要的是喜欢一键功能,让小白用户享受到了免费使唤一个“管家”的感觉,可是实际上他们在运行过程中会给很多移动产品带来影响。
比如:灭屏强行关闭网络。导致我们灭屏播放在线歌曲受限
灭屏开启强制杀进程,导致程序被误杀。
卸载时清理应用相关文件,会导致清空用户下载的歌曲数据
控制软件使用权限,比如我们在打开应用时,管理软件提示该软件需要使用某权限,是否禁止,会导致应用原来的很多功能不能正常使用。
以上这些坑,一方面会导致用户使用我们产品过程中的体验变差,带来一些用户流失。
另外一方面在我们与用户沟通确认的过程中会浪费相当多的时间,比如一个后台闪退被杀进程的问题,我们必须要排除是否是软件本身的问题,最后定位到其他管理软件导致也只能是给自己一些安慰。曾经发现的比较严重的问题是,我们的联通免流量业务需要获取手机Device ID验证后才能正常的进行代理免流量,后来收到一个用户反馈说他的手机开通使用业务却被扣费,最后花了很大的精力才发现用户手机上的系统管理软件当时禁用了我们软件获取他手机的Device ID,导致无法确认手机已经开通业务。
虽然这些问题不是我们程序本身的BUG,但是我们的开发也需要适当的对这些问题进行修复或引导,尽可能的减少体验的降低和用户的流失。
3、竞品及关联APP坑
在实际用户环境中,还有一部分问题来源于其他APP。
比如我们这款音乐产品来说,遇到的最多的就是声音权限冲突问题,之前的荔枝FM这款APP只要安装在手机中,就会导致我们云音乐的播放暂停,另外还有QQ音乐、酷狗音乐某些版本也会导致类似的问题,问题源于他们会在非播放歌曲时也会偷偷的申请声音权限,导致我们暂停。还有千牛软件(一款淘宝买家软件),每次收到消息时,云音乐播放就会暂停,即使千牛的通知消息声结束时,云音乐也不会继续播放,原因是千牛的通知消息设定了一个非固定长度的声音,云音乐被打断了就无法继续。后来程序猿也只能通过其他方式来避免这些“不讲道理的同行”带来困扰。
竞品下载的文件异常 由于我们产品需要去扫描手机本地的歌曲,但是实际曾出现过某个文件夹的歌曲扫描不到的情况,最后是发现某竞品下载的Flac歌曲文件进行了特别的处理,导致我们需要针对这种情况进行特别处理。
关联APP接口更换 在产品推广及社交互动的驱使下,很多产品都有分享到其他软件的功能,常见的比如分享到QQ好友,然而在QQ提供的接口中,有时候却不能完全适用,比如用户如果装了QQ HD版、QQ国际版,便不能正常使用我们的分享接口。
4、Android系统之坑
这方面最常见问题就是开发者可能用了新版本上的API,对于低版本比如2.3版本不支持,导致产品运行崩溃之类的问题。
其次就是最新版本的支持,这种其实也无法避免,像4.4版本extSDcard系统的修改导致了很多的问题,这需要对于新版本发布时的修改点及时确认影响范围,并尽快修改。
5、服务器端之坑
一般来说,服务器端的问题造成的影响范围总是很广,一个小的BUG可能会被所用用户捕捉到(而不像移动端的BUG更多的可能是某种特定的场景出现),但是好在修复快,无需移动端重复上线这么复杂。
这方面的BUG其实有很多,就不一一罗列,常见需要检查的还是服务器返回的数据,上传数据到服务器后在其他地方显示的检查,以及新增或修改接口的确认等等。但是下面这个也是一个比较有趣的例子,曾经发现在客户端动态流里点击@闃xx 这个用户,提示无法找到该用户,最后确认为我们的服务端字库里对这个字未识别,导致这个“云音乐达人”用户曾经长达几个月的时间不能被他的粉丝们点击到…
相关推荐
6. **兼容性**:测试应用在不同设备和Android版本上的表现,确保广泛兼容。利用Android的碎片化特性,为不同的设备提供定制化的体验。 7. **持续更新**:根据用户反馈和市场变化,定期更新应用,修复已知问题,添加...
在进行H5自动化测试环境搭建时,我们经常会遇到一些坑,特别是涉及到WebView和Chrome Driver的兼容性问题。本文将详细探讨这些关键知识点。 首先,理解Webview和Chrome Driver的关系至关重要。Webview是Android系统...
在iOS App测试过程中,开发者和测试工程师可能会遇到各种问题,这些问题如果不妥善解决,将严重影响App...在实际操作中,还可能遇到其他问题,如兼容性测试、性能优化等,都需要不断学习和实践,以适应iOS平台的特性。
- 测试不同Android版本的兼容性,因为某些API可能在不同版本上有差异。 文件名"slidingselect"可能指的是实现这一功能的主类或模块,它包含了滑动选择的核心逻辑和组件。在实际开发中,可以将这个类拆分成多个组件...
9. **兼容性问题**: 考虑到Android设备的多样性和系统版本差异,确保在不同设备和系统版本上都能正常运行,可能需要适配低版本Android的特性。 10. **安全问题**: 为了防止支付信息被篡改,所有的敏感数据,如...
6. **兼容性处理**:为了确保应用能在不同版本的Android系统上正常运行,开发者需要进行兼容性测试并编写适当的代码。可以使用`Build.VERSION.SDK_INT`检查系统版本,然后根据不同的API级别执行不同的操作。 7. **...
- **版本适配**:考虑不同Android版本和设备的兼容性,确保支付流程在各种环境下都能正常运行。 6. **PayYinLian文件夹**:这个文件夹很可能包含了银联支付的相关资源文件、配置文件、示例代码等。开发者可以通过...
虽然示例基于Android 5.1.1,但要注意不同Android版本和设备可能存在差异,确保库的兼容性和适时更新。 通过以上步骤,你可以实现一个基本的Android串口通信应用。在实际项目中,可能还需要根据需求进行更多定制,...
9. **测试与调试**: 在实际环境部署前,确保在模拟器或真实设备上充分测试应用的数据库功能,检查兼容性、性能和稳定性。 总的来说,集成DB2到Android应用涉及多个步骤,包括设置JDBC驱动、建立连接、执行SQL和处理...
在Android开发中,TextView是一个非常基础且常用的组件,它用于显示文本内容。在设计用户界面时,我们常常需要根据不同的...记住这个小技巧,它可以帮助你绕过一些不必要的陷阱,减少调试时间,并提升应用的兼容性。
在兼容性方面,Phantom经过了广泛测试,确保能在各种Android版本和设备上正常运行。这使得开发者无需担心因设备差异而导致的适配问题,能够更专注于应用的功能开发。 Phantom的工作原理大致如下:首先,主应用...
坑6:兼容性问题 不同设备的硬件和驱动可能对双GLSurfaceView的支持程度不一,需要进行广泛的设备测试和适配。对于不支持的设备,可以考虑降级到单个GLSurfaceView或者使用其他显示方案。 总结,实现双...
2. **稳定可靠**:经过360公司内部大量产品的实战检验,RePlugin具有高度的稳定性和兼容性,能够应对复杂的应用场景。 3. **易于使用**:RePlugin提供了一套简洁的API,使得开发者能够快速上手,减少学习成本。 4....
在Android平台上进行微信支付开发时,开发者可能会遇到一系列挑战。...在实际开发过程中,还需要注意及时更新微信SDK,遵循最新的开发文档,以及关注微信支付的官方公告,以确保应用的兼容性和安全性。
8. **兼容性问题**:不同Android版本和设备可能存在差异,需要在不同环境中测试,确保解决方案的兼容性。 9. **性能优化**:监听键盘状态可能会消耗一定资源,因此在不需要的时候取消监听是必要的。可以通过`...
同时,MediaCodec在这个版本开始接受CTS测试,确保在不同设备上的兼容性。Android 5.0 (API 21)进一步引入了异步模式,允许应用程序在缓冲区可用时执行回调方法,但考虑到兼容性,示例代码通常仍保持API 18+的支持。...
开发者应时刻关注官方发布的更新文档,以确保兼容性,避免因版本不匹配引发的编译错误。 三、Android Studio特性 1. AS版本号:每个新版本都会带来性能提升、新功能和bug修复。例如,Android Studio 4.x引入了...
需要注意的是,Xposed并不兼容所有Android版本,特别是对于Android 7.0及以上的新系统,支持相对有限。 【Xposed环境搭建】 搭建Xposed框架通常建议在模拟器中进行,因为这样可以避免频繁地重启真机。Genymotion是...
1. ADT(Android Development Toolkit)无法启动的问题:可能是因为版本不匹配或插件未正确安装,需要检查ADT和Eclipse/Android Studio的兼容性,或者重新安装ADT。 2. 避免在Android开发中使用中文路径:由于编码...
// Android兼容的日期格式 var startDate = new Date("2018-08-08"); // 正确 // iOS上可能出现的问题 var startDate = new Date("2018/08/08"); // 可能正确 ``` #### 视频播放兼容性问题 此外,视频播放也是小...