小米应用市场:开发最佳实践与兼容性建议(适配常见问题)

2015-10-16 14:10:14 |发布者: 安智宝

MIUI是基于Android深度定制的操作系统,和Android保持100%兼容,我们准备了一些在Android开发过程中哦给你可能遇到的问题,也许对您有所帮助。

如果在基于MIUI进行开发、测试的过程中遇到问题,我们会竭尽所能协助开发者解决。在和开发者沟通的过程中,我们发现,很多应用遇到的问题,并非因MIUI导致,而是对Android本身。

1.尽量用Android标准的接口,最好不要很“聪明”的读取较为底层的数据

每个手机的底层都有可能有自己独特的实现,这种特殊性,其实是对开发者屏蔽的,开发者直接利用,有时会得不到期望的效果。

比如之前我们发现一款app,会直接读取底层frame buffer,然后以录像的方式显示当前屏幕,但是由于我们frame buffer的特殊性,结果它读出来的就是两三段断开的屏幕。app下载量提升

再比如,有些游戏会直接从底层的读取motion event,然后自己再根据这些事件做些相应操作,但这些事件未经过android处理,结果就有可能有问题。

2.要和Android版本保持一致

Android随着版本的升级,会有些向后兼容性不好。常见现象是,本来在较低版本上正常运行的app,在较高版本上运行失败。

一个常见的问题是权限相关,比如WRITE_APN_SETTINGS这个权限是在某个版本上加进去的,若app不申请此权限,在之前Android版本可正常运行,但是一旦Android升级,app就会因为缺乏权限而FC。app推广神器

3. NDK版本

有些app可能是用NDK开发的,对于这样的app,一定要在对应的NDK版本下编译测试,否则极有可能出现莫名其妙的问题。

比如,我们之前和某播放器应用联调过一个问题:该播放器在MIUI上播放一段时间后,立即卡死,当时我们调试了好久,怀疑SurfaceFlinger,怀疑播放器本身,等等,各种调试,无果。

最终,还是发现是由于该播放器编译时,NDK版本不对。

4. 一定要释放资源

一些资源,比如WakeLock,WifiLock,File descriptor,Cursor等一定要释放,这些资源甚至会影响到全局。比如WakeLock和WifiLock会影响屏幕和Wifi的休眠,从而导致耗电。

而Cursor,尤其是一些较为常用的Provider获得的Cursor,长期不关闭,有可能会导致该Provider无法工作。小米应用商店

5. 耗电操作

慎用某些对耗电敏感的操作,比如Alarm,比如频繁扫描Wifi,一定要考虑这些操作的极端最坏情况。比如,之前我们手机上某NetworkProvider导致手机空置状态下,比以前成倍的耗电。原因就是,Alarm不断唤醒手机,每次唤醒又不断的扫描Wifi。

对于有后台Service的,确保该service只在必要情况下运行,而不会一直运行,可以用strace查看下app的活动状态

6. 在MIUI上出现问题后,排查的手段

  • 首先看原生系统上有无问题 找对应的Nexus 4或者Galaxy Nexus等,看看是否有相同问题,若有,基本确定是app自身问题,否则有可能和MIUI有关
  • MIUI对权限控制较为严格: 若出现问题,可先看看授权管理,打开相应权限
  • 若确定为MIUI问题,可以和我们联系,我们会竭尽全力帮助您解决问题 之前我们曾协助啪啪、暴风影音、唱吧以及其它个人开发者或者终端用户调研过遇到的问题,均得到较好的解决方法。

注:文章转自小米应用市场


Copyright © 2016 - 2020 anzhibao.com . All Right Reserved.

安智宝  版权所有