admin管理员组

文章数量:1532205

2024年3月4日发(作者:)

Android模拟器调试与真机调试

一、

模拟器调试与真机调试

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列出

Android真机调试配置

最近调试Android游戏,发现模拟器那是相当的卡,尤其是输入的时候,根本无法满足测试需要。

逼不得已只有用真机测试,发现真机真的是比模拟器流畅了得多,但是搭建真机调试环境配置起来还是有些恶心。

真机调试前,请先确定已安装了Android SDK下面的USB Driver,否则手机设备无法被识别,另外请注意操作系统版本,Android 2.2的程序运行在2.1上面会有问题, 程序尽量使用1.6或者2.1的SDK来打包,通用性较好。

参考步骤如下:/view/

下面是我的一些经验:

首先是在手机上设置一下USB开发,步骤: 设置 -> 应用程序 -> 开发 -> 开启USB调试

然后在Eclipse上设置,步骤: debug configurations(点击小虫子的那个小三角) -> Target -> 选择Manual -> 单击Debug按钮,等待程序打包成.apk并上传到真机上运行

网上很多帖子说 要在 中添加

但是我测试了下打开这个真机会比较卡,如果只是为了看运行游戏效果而不是debug跟踪的话,建议不要打开。个人比较习惯直接运行看效果,出错的话直接打印到屏幕上,开发既流畅,又效率高。

真机在Debug状态下运行,在一些机子中会存在绘图不全的情况,也就是说只会绘制一部分图,有些恶心,但是直接运行的话很正常。

n()这玩意在Debug时候有些卡。

启动的线程过多也会很卡,千万别创建过多的线程,虽然Android机子性能都比较好,但是还不是电脑那种配置,要用开发J2me的精神去开发Android。

真机提供的最大堆栈大小(heap max size)比模拟器上高很多,基本不存在图片加载超内存的问题。

(在模拟器创建的时候可以自己设置堆栈大小,Max VM application heap size, 建议WVGA设置到100M,WQVGA设置到50M,QVGA设置到20M)

android调试

1人收藏此文章, 收藏此文章发表于3个月前 , 已有334次阅读 共0个评论 1人收藏此文章

通过学习,发现主要用到以下两种方式来调试和查找bug:adb + ddms.

adb(Android Debug Bridge)是Android提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作:

1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;

2、在设备上运行shell命令;

3、管理设备或手机模拟器上的预定端口;

4、在设备或手机模拟器上复制或粘贴文件;

在网站/下载platform-tools_,解压后,复制 和 到C:wINDOWSsystem32,在windows的dos下,输入adb,如果没有出现adb不是内部或者外部命令,则说明ok了。本方式说的是是在虚拟环境下测试的,非真机.

常用命令

adb shell - 登录设备shell,后面也可直接跟运行命令。如:adb shell rm -r

/system/sd/app

adb pull - 从手机中下载文件到电脑上。如:adb pull /data/app_s/

C:

adb push - 从电脑中上传文件到手机上。如:adb push C:

/data/app_s/

adb install - 安装软件到手机上。如:adb install C:

adb uninstall - 卸载手机上的软件。如:adb uninstall

DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。

在安装好的android sdk包里面,包含了ddms,启动eclipse,在Eclipes的debug中,选择other,在弹出的窗口中,可以看到ddms,点击就可以显示出来了,详细说明,请看/?p=638。

Android 实现真机远程调试并适应7寸屏大小

2010-07-14 14:09 by Terry_龙, 2309 visits, 网摘, 收藏, 编辑

学 android 也有一段时间了,一直都是用 Android 提供的模拟器运行测试例子,也不知道做的东东在真机是啥效果。今天跟公司要了一个七寸屏的车载屏做真机测试。下面是我实现真机远程调试的步骤:

此方法同样适用于使用手机做真机测试

1、接入USB

选择“是”,单击下一步

单击“下一步”,去查找我们之前下载的SDK目录,找到usb_driver,如图:

点击“确定”,等其为我们安装驱动

接着只要等其安装完成即可实现在Windows 下与真机进行调试或者安装程序等操作。在DOS 界面上敲入 adb devices 可以得到该机的序号

到了这一步,可算是完成了一大半的工程了,不过我在下面的时候碰到了一个问题,就是应用程序在7寸屏运行的时候无法全屏化操作,即使我使用如下代码打印屏幕大小也始终显示320 *480

DisplayMetrics dm=new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm);

xt(,

ng(Pixels)+":"+ng(ixels) ,

_SHORT).show();

这个问题折腾了我一上午,上网查了一下也不得答案,着实让人郁闷。

问题截图如下:

仔细察看明细无法全屏,而是跟手机的尺寸大小一样,后来一同事说要指定目标SDK版本才可以,发了一小段代码给我放在配置文件上面,之后运行程序调试一下,果真可以实现全屏化。代码如下:

加入上面代码运行效果如下:

经测试,发现版本号必须为4以上,才可支持适应全屏化,也就是说即便你写一个100也可以支持。

Tip:使用真机调试和使用模拟器调试操作是相同的。

android真机调试的一些总结

android 2011-01-10 10:55:54 阅读74 评论1 字号:大中小 订阅

首先需要说明的是,标准版android和乐phone的android在某些方面都是不太兼容的,我在win7下,它们的模拟器和就不太兼容。

1:首先是要下载你手机的驱动,一般官网都会提供。我这里就提供一个乐phone的(/developer/)

2:下载好后就安装。然后在你的手机上设置调试模式(在:设置 -> 开发 -> USB调试,勾上就好了;乐phone中就是:系统设置 -> 应用程序设置 -> 开发 -> USB调试)

3:然后连接你的手机,在设备管理器中会识别成这样

4:这一步要注意,如果你想识别出乐phone,就要使用乐phone提供的,而不要用官方版的,所以:

d:

cd D:ProgramLEOS_mobile_sdk_1.7.0_101029_windowstools

D:ProgramLEOS_mobile_sdk_1.7.0_101029_windowstools>adb devices

adb server is out of date.

* daemon started successfully *

List of devices attached

1234567890ABCDEF device

Coolpad_N930 device

看到这个就说明连接成功了

5:现在你可以在eclipse中用真机调试了

run -> run configuration -> 设置manual就可以了,到时会让你选择可用的设备的

Android平台代码很多,关系也很复杂,通常我们调试程序的时候是无法跟踪到Android framework

code里的,如果能调试跟踪Android source code将给我们这些初学者带来很多便利,本文将给出一个调试跟踪Android source code 的方法。

1. 首先,得到Android 源代码(可参考之前的文章--如何获取Android源代码并编译.doc),并且编译,得到output file,在(Android source)/out目录下,也可通过别的途径获取Android source

code (以为例) 和别人编译好的 output file()

2. 解压缩这两个 tgz 文件,并把解压出来的out 目录放到 myandroid 目录下,如下图所示。

3. 拷贝 ath 到 ath.

4. 拷贝 myandroidouttargetproductgeneric*.img 到 {Android

SDK}toolslibimages 并且覆盖源文件.

5. 运行{Android SDK}tools目录下的 .

6. 运行{Android SDK}tools目录下的 。你可以看到下面的窗口,里面会列出当前emulator里跑的进程:

7. 启动 eclipse ,按照这个步骤 File->New->Java Project (不是 Android Project!)

->Create project from existing source 选到 myandroid 目录 .

8. 在经过长时间等待之后,Android source code将被导入project,正常情况下应该没有error,但是会有很多warning,如果有error后面的debug将不会成功,原因可能是output file ,在解压得过程中出错,重新copy ,或者完整拷贝 out/ 目录到本地目录下,即可解决。

9. 选择想要调试的进程在 DDMS, 用 phone 进程为例,ddms一定要在eclipse之前启动,否则eclipse启动的时候也会启一个ddms,会造成冲突。

10. 在eclipse里, Run->Debug Configuration->Remote Java Application->New, 设置

Connection port to 8700 (DDMS’s 默认端口,你可以改变它).

11. 设置断点在source code,然后就可以像往常一样进行调试了。

真机usb调试

首先在真机里选择USB调试,具体的在:

Setting(设置)—>Applications(应用程序)-->Development(开发)USB debugging(usb调试),将这个勾上,然后用usb数据线将真机与pc机连接

Android的调试原理--学习笔记

2009年06月06日 星期六 23:17

/* 今天学习了用Eclipse 来调试Android的代码,首次使用,可能有的问题很基本,有问题请指出,交流嘛:) */

(笔记中提到的Emulator也可以理解成Device)

一、adb的介绍:

adb(Android Debug Bridge)包括三个部分:

1)adb client, 运行在PC上(为DDMS,即IDE工作)

2)adb daemon(守护进程), 运行于Emulator(为与Emulator中的VM交互工作);

3)adb server(服务进程), 运行在PC(任务管理器上有),管理着adb client和adb daemon的通信.server与client通信的端口是是5037,

adb server会与emulator交互的,使用的端口有两个,一个是5554专门用于与Emulator实例的连接,那么数据可以从Emulator转发给IDE控制台了为后面调试使用。

PS:Emulator/Device占用两个(一组)端口,一个为偶数的5554,一个奇数的5555。

如果还开启其他的Emulator,则使用的另一组端口是5556,5557,一直到5585.

adb server开启时就是通过查找5555-5585之间端口来建立与模拟器的连接的,建立连接后就可以用adb的相关命令了。

如果您安装了ADT就基本不需要adb的命令了(因为DDMS会调用ADB进行透明操作)

关于本机的端口使用情况可以使用netstat [-a] [-n]来查询验证一下。

二、观察一组数据:

1,在开启仿真器时有一些打印:

[2009-06-06 14:04:16 - Helloworld] Android Launch!

[2009-06-06 14:04:17 - Helloworld] adb is running normally.

[2009-06-06 14:04:17 - Helloworld] Performing orld activity launch

[2009-06-06 14:04:17 - Helloworld] Automatic Target Mode: Preferred AVD 'lab' is not available. Launching new emulator.

[2009-06-06 14:04:17 - Helloworld] Launching a new emulator with Virtual Device 'lab'

[2009-06-06 14:04:24 - Helloworld] New emulator found: emulator-5554

[2009-06-06 14:04:24 - Helloworld] Waiting for HOME ('') to

[2009-06-06 14:05:45 - Helloworld] HOME is up on device 'emulator-5554'

[2009-06-06 14:05:45 - Helloworld] Uploading onto device 'emulator-5554'

[2009-06-06 14:05:45 - Helloworld] Installing ...

每一行都基本表示一个命令在执行,emulator-5554是仿真器的初始端口了。

最后一句等于命令:adb -s emulator-5554 install

如果报了类似以下的错误,那得(加个-r)重装,因为该App已经在该Emulator下运行了

DDM dispatch reg wait timeout

Can't dispatch DDM chunk 52454151: no handler defined

Can't dispatch DDM chunk 48454c4f: no handler defined

网上没有看到这个错误因此顺便提下解决方法:adb -s emulator-5554 install -r

三,了解下DDMS:(都是adb的命令相当的功能)

DDMS有几个界面:

1)Devices:可以查看到当前运行的Emulator和其内运行的应用

2)Emulator control,即仿真器的硬件设置项等:

设置当前注册的网络状态(Home,Roaming,UnRegistered,Searching)

数据业务的速度设置:有GSM,GPRS,EDGE,UMTS,HSDPA(3.5G?)

还有载入KML或NMEA文件来模拟GPS数据

3)还可以查询Threads,Heap,File Explorer、重启adb,抓屏等,其他都是在调用adb。

4)关于Logcat

从Windows->Prereference->android->DDMS->Loggin Level进行设置打印等级,

不过默认下只打印入口线程的信息,射频和Tapi的动作信息要通过adb Logcat -b radio打开,

os-events相关的打印通过adb logcat -b events.打开,

Log默认被写入到手机的/data/anr/文件中。

四,Debug面板

这个面板对于熟悉Eclipse的用户来说应该不用看了。

通过以下三步将自己的应用或将已经跑起来的应用加入调试列表:

1)选择Devices列表中Your app,

2)选择臭虫按钮将该程序加载进调试状态

3)OK,加断点吧。不过源代码要最新的否则断点不起作用。

五、DDMS如何让IDE的调试工作起来呢?

1)有几个组成:

一个是adb(Android Debug Bridge)参考第一部分,它起到调试桥的作用;

另一类是运行在Device/Emulator端的adb daemon, VM, debugger, your Applicatioin,

通过下面句话就可以理解它们的关系:

一个App跑在一个进程中,这个进程又被一个VM绑定,都是一对一的,但VM与Emulator显然是多对一的,

那调试时debugger从VM中拿到栈线程进程等信息,而daemon的作用仅仅是被DDMS用于建立一条连接(看下面)。

最后一类则是运行在PC上的DDMS debugger;

这个debugger是IDE的调试器,你可以改成另一个调试器;

DDMS是Dalvik Debug Monitor Service,负责建立调试的作用,它仅有两个Service,其他的功能都是通过ADB client.让IDE与Emulator交互起来的

2)开启IDE时,DDMS会建立一个Device monitoring service用于监控Emulator,因为可以开启多个Emulator嘛;

如果找到一个Emulator,那么DDMS才会再开启另一个Service叫VM Monitoring Sevice用于监控该Emulator下的VM; 第一部分提到adb有三个部分的Service通过从ADB Client与ADb server的交互结果来维护自身的数据。

如果VM Monitor找到Emulator的一个VM,那么DDMS会利用ADB获取目标VM的进程ID,

同时通过client与daemon建立起与vm的debugger的新连接,注意新连接的交互端口是从8600开始的(n个的话端口是8659+n),这条新连接可以让

剩下的就是DDMS把拿到的数据再扔给ide 的 debugger(它们之间默认通过8700端口,可更改,因为与VM的交互端口从8600开始使用的话可能会不够这样IDE的Debug视图就能正确工作了.

本文标签: 调试模拟器使用手机