4

现在很多开发者尤其是初学者做安卓开发的时候都是用的模拟器,但是众所周知,模拟器往往达不到真机真实水平,模拟的都是一些标准接口,对于一些非标准接口的BUG无法发现~,相信很多程序猿跟我有同样的遭遇,电脑配置不是很好,用模拟器往往是又卡又慢,甚是蛋疼。。。虽说android模拟器功能很强大,可以模拟各种机型,但在实际开发中还是有很多不一样的地方,没有一个真机测试还真难保证自己的应该能够在真机上顺畅跑起来,遇见这种问题解决完了又会有其他问题,没完没了,真没意思。。。

我先总结模拟器的几大缺点,然后再列举一些实际开发中,模拟器的一些坑。。。

1.模拟器太慢

模拟器的运行速度取决于PC的配置,如果PC使用了机械硬盘那么使用模拟器光是启动的时间就够泡一壶茶了。Genymotion这样的模拟器公认比较快,这是因为它对安卓系统进行了大量精简,然而这样的系统下开发出来的应用一旦来到真机上势必BUG不会少。

2.安卓定制化现象严重,模拟器在某些方面往往达不到真机的真实水平。

现在连IOS系统都有60余款了,安卓手机更是不用说了,主流的都有上千款。国内的手机厂商们热衷于对安卓系统进行深度定制,这也让开发者们操碎了心。小米、魅族、锤子这样的深度定制系统,应用开发好以后同样需要使用真实设备来适配。

3.模拟器不能模拟所有的API

Email、电话、短信等基于真实硬件的API由于模拟器本身的限制是不能被模拟出来的,因此应用但凡需要调用这些API的,都应该选择真机调试。

4.真机调试更能清晰真实的反映出开发过程中出现的问题;而模拟器性能比较差,在模拟器上不一定能发现。

5.真机测试更能支持横竖屏都方便,有一些情况模拟机不行。

6.搞3D图形图像时候,真机支持,虚拟机不一定支持OpenGL ES。

7.真机调试速度快,模拟器速度慢

列举实际开发遇到的不同之处:

1.模拟器上安装的apk签名是debug模式的,发布应用到市场上要用另外的签名。

2.模拟器上用px像素可以正常显示,但在真机上有可能布局变得面目全非,很难看,真机上必须用dip让系统自动识别才能达到预期效果。

3.模拟器上空格用\t可以正常显示,但到真机(ME525+)上就不起作用了。

4.模拟器调用邮件服务报错,到真机上会弹出选择。还有其他一些功能也是如此。

5.模拟器上创建快捷方式的提示和真机的差别比较大,模拟器上提示有部分英文的,真机上全中文的,而且有连续几个不同内容的提示。

6.模拟器上看到的输入框效果比较大,真机上看明显小了很多。

7.模拟器上(2.3.3版本的)输入框、单选框等焦点状态时边框是黄色的,但真机上是蓝色的。

8.模拟器上发布程序后会自己启动程序弹出界面,真机上通过电脑安装后则不会弹出来。

9.模拟器不能震动,真机上才看有效果。

10.模拟器可以直接连接本地电脑局域网ip,真机不行。

11.模拟器可以模拟发送短信 拨打电话 gps定位功能,用真机需要两台手机才能用,不能通过模拟器和一台真机实现,而且真机不能通过模拟端口实现(需要真实拨打电话和发送短信)

12.模拟器无法调试蓝牙硬件设备相关的接口,必须要真机才能跑

13.模拟器无法测试多点触摸(比如两个手指放大文本字体大小)的功能

模拟器与真机如何调试

1.模拟器调试

运行源码或SDK中的emulator,加参数

2.真机调试

1) 用usb线连接G1硬件和PC

2) 若是windows系统,则安装驱动

3) 用源码或SDK中的adb命令看硬件是否连接成功

  $ adb devices正常调试

4) 注意:

  a) 在Linux连接真机时需使用root权限

  b) 如果之前连接过模拟器,最好连接前先杀掉adb后台进程

  $ killall adb

3.Eclipse中调试

  若连接真机,未打开模拟器时,直接连接真机调试

  若未连接真机,已打开模拟器时,在当前模拟器中调试

  若未连接真机,也未打开模拟器时,打开模拟器调试

  若只开多个真机或多个模拟器时,同时有多个可连接的设备,弹出列表供用户选择

4.命令行中使用adb工具调试

  连接多个设备时,需要用命令行参数指示设备名或设备类型

  $ adb –s 设备名shell 设备名由adb devices列出

  $ adb –d shell 与硬件设备相连

  $ adb –e shell 与模拟器相连

5.云手机调试(如果不想用模拟器,真机又不够,或者没有合适的真机,可以选择这种调试)

这个我之前写过一个专门的教程,大家可以参考我之前发的文章:http://segmentfault.com/a/1190000004314205

今天就先到这,喜欢就点个推荐,收藏下吧,谢谢支持。。。


gggggggbong
253 声望20 粉丝