作者:gzjay,腾讯MIG无线产品部 高级工程师


最近一朋友提了几个Android问题让我帮忙写个小分享,我觉得对新人还是挺有帮助的,所以有了这个小分享。

 

1.目前, Android APP开发完成后,通常需要在哪些机型上进行测试?

 

2.目前, 开发Android APP时,需要考虑的分辨率有哪些?

 

这两个问题可以合起来回答的。

http://developer.android.com/about/dashboards/index.html

源自Google Play的数据,每月都会进行update,可以及时了解Android版本比例趋势。

 



 

屏幕密度数据

 



 

OpenGL ES版本

 



 

也可以参考一下国内一个第三方数据:http://www.umindex.com/#android_device

 



 

目前三星和小米市场占有率是遥遥领先的,三星Note2、Note3、S3、S4、S5、小米123、红米必须测试,魅族也比较坑爹,加入测试名单吧。再选中小屏幕各一款(譬如华为C8650、Moto ME511)。

Android 1.5、1.6、2.0、2.1和小屏幕的属于古董级别的机器,市场存量也很少,新出的机器都是4.0以上的了,所以必要时需要舍弃对古董的支持,因为适配成本很高,对于新开发的应用,这个适配不值得投入。

 

3.目前, 开发Android APP时,适应多个分辨率的技术方案有哪些?

 

http://developer.android.com/guide/practices/screens_support.html

Android的屏幕适配,可以在工程res目录下进行处理,无需写代码,Android自动找最适合的资源进行显示,相信大家都相当熟悉的了。

 

目前我使用的是ADT22.6,新建一个Android工程,会自动在res目录下生成这个目录结构。这里有5个前缀drawable的文件夹,对应不同密度屏幕时所取的图片资源或者样式。

 



 

做一个功能正常的App,开发者需要遵循一些开发守则,与此同时,设计师也需要有一套标准来设计Android UI,所有的Android UI设计指南都在这里了。

http://developer.android.com/design/style/devices-displays.html

 

9Path这个简单易用的工具,很实用,必须推荐。

 

画个图标,都要出N种分辨率,每次机械操作实在有点弱爆,推荐一个牛X的工具:

 

其中的功能可以自动切图输出各种屏幕密度的icon,可视化构建布局,自动生成布局文件。

http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html

 

推荐这个,设计师应该会很喜欢,秒切图。

http://www.cutandslice.me/

 



 

实际开发中,考虑到包体积大小,不会在所有drawable中都放不同size的图片资源,而是只使用一套图片资源,编写不同的布局。个别特殊的图片资源就每个drawable文件夹中放相应的size,譬如程序图标,不按文件夹放可能会导致在Launcher显示失真。

 



 

虽然不作任何改动也可以在Android Pad上跑,但由于Pad屏幕较大,操作体验不一样,建议重新设计。

 

4.开发Android APP**时,配置文件应放在哪里(APP本地、远程WeB Server中)?应该如何考虑?

这个就要看需求了,如果只是本机使用,譬如保存软件设置,不需要联网操作的,那首选当然是保存在本地。

 

如果业务需要和服务器交互,可以做成云配置方式。为了跨平台的兼容性,可以考虑使用Google的ProtoBuf,比XML更小更快更简单,后台和终端定义一套协议,自动生成C++、Java或者Python代码。https://developers.google.com/protocol-buffers/docs/overview?hl=zh-CN
5.Android APP**测试方案通常考虑哪些因素?有测试方案的参考实例吗?



机型适配:屏幕大小,这个只能人工检验了(程序不知道你的UI长得好不好看)

 

Android版本(某些API在低版本上没有的,会Crash,推荐Lint静态扫描)

 

网络质量:联通、电信、移动、WiFi、弱网络等

 

安全性:网络数据必定经过加密处理;本地不保存安全信息(帐号密码等),或者加密保存

 

代码中敏感信息尽量使用byte数组而不是字符串代码混淆处理(Proguard)

 

SD卡剩余空间很少,没SD卡,双SD卡,飞行模式,时间有误等。

 

性能:CPU、内存占用(开发可以使用Linux的top命令或者DDMS里面的工具)

 

网络流量消耗(有各种第三方流量监控软件)

 

6.**开发Android APP时,为了提高工作效率,提高项目质量、通常需要抽象出一些lib出来,请列出经常用到的接口的名称和用途。