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视图就能正确工作了.
版权声明:本文标题:android真机和模拟器调试问题 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1709551097a229787.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论