android真机和模拟器调试问题Word下载.docx
- 文档编号:22694752
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:17
- 大小:497.45KB
android真机和模拟器调试问题Word下载.docx
《android真机和模拟器调试问题Word下载.docx》由会员分享,可在线阅读,更多相关《android真机和模拟器调试问题Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
连接多个设备时,需要用命令行参数指示设备名或设备类型
$adb–s
设备名shell
设备名由adbdevices列出
Android真机调试配置
最近调试Android游戏,发现模拟器那是相当的卡,尤其是输入的时候,根本无法满足测试需要。
逼不得已只有用真机测试,发现真机真的是比模拟器流畅了得多,但是搭建真机调试环境配置起来还是有些恶心。
真机调试前,请先确定已安装了AndroidSDK下面的USBDriver,否则手机设备无法被识别,另外请注意操作系统版本,Android2.2的程序运行在2.1上面会有问题,程序尽量使用1.6或者2.1的SDK来打包,通用性较好。
参考步骤如下:
下面是我的一些经验:
首先是在手机上设置一下USB开发,步骤:
设置->
应用程序->
开发
->
开启USB调试
然后在Eclipse上设置,步骤:
debugconfigurations(点击小虫子的那个小三角)->
Target->
选择Manual->
单击Debug按钮,等待程序打包成.apk并上传到真机上运行
网上很多帖子说要在AndroidManifest.xml中添加
<
applicationandroid:
icon="
@drawable/icon"
android:
label="
@string/app_name"
debuggable="
true"
>
但是我测试了下打开这个真机会比较卡,如果只是为了看运行游戏效果而不是debug跟踪的话,建议不要打开。
个人比较习惯直接运行看效果,出错的话直接打印到屏幕上,开发既流畅,又效率高。
真机在Debug状态下运行,在一些机子中会存在绘图不全的情况,也就是说只会绘制一部分图,有些恶心,但是直接运行的话很正常。
System.out.println()这玩意在Debug时候有些卡。
启动的线程过多也会很卡,千万别创建过多的线程,虽然Android机子性能都比较好,但是还不是电脑那种配置,要用开发J2me的精神去开发Android。
真机提供的最大堆栈大小(heapmaxsize)比模拟器上高很多,基本不存在图片加载超内存的问题。
(在模拟器创建的时候可以自己设置堆栈大小,MaxVMapplicationheapsize,建议WVGA设置到100M,WQVGA设置到50M,QVGA设置到20M)
android调试
1人收藏此文章,
收藏此文章发表于3个月前,已有334次阅读共0个评论
1人收藏此文章
通过学习,发现主要用到以下两种方式来调试和查找bug:
adb+ddms.
adb(AndroidDebugBridge)是Android提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态。
还可以进行以下的操作:
1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;
2、在设备上运行shell命令;
3、管理设备或手机模拟器上的预定端口;
4、在设备或手机模拟器上复制或粘贴文件;
在网站和AdbWinApi.dll到C:
\wINDOWS\system32,在windows的dos下,输入adb,如果没有出现adb不是内部或者外部命令,则说明ok了。
本方式说的是是在虚拟环境下测试的,非真机.
常用命令
adbshell-登录设备shell,后面也可直接跟运行命令。
如:
adbshellrm-r/system/sd/app
adbpull-从手机中下载文件到电脑上。
adbpull/data/app_s/Stock.apkC:
\\Stock.apk
adbpush-从电脑中上传文件到手机上。
adbpushC:
\\Stock.apk/data/app_s/Stock.apk
adbinstall-安装软件到手机上。
adbinstallC:
\\apps2sd.apk
adbuninstall-卸载手机上的软件。
adbuninstalllinda.apk
DDMS的全称是DalvikDebugMonitorService,它为我们提供例如:
为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。
在安装好的androidsdk包里面,包含了ddms,启动eclipse,在Eclipes的debug中,选择other,在弹出的窗口中,可以看到ddms,点击就可以显示出来了,详细说明,请看
Android实现真机远程调试并适应7寸屏大小
2010-07-1414:
09byTerry_龙,2309visits,
网摘,
收藏,
编辑
学android也有一段时间了,一直都是用Android提供的模拟器运行测试例子,也不知道做的东东在真机是啥效果。
今天跟公司要了一个七寸屏的车载屏做真机测试。
下面是我实现真机远程调试的步骤:
此方法同样适用于使用手机做真机测试
1、接入USB
选择“是”,单击下一步
单击“下一步”,去查找我们之前下载的SDK目录,找到usb_driver,如图:
点击“确定”,等其为我们安装驱动
接着只要等其安装完成即可实现在Windows下与真机进行调试或者安装程序等操作。
在DOS界面上敲入adbdevices可以得到该机的序号
到了这一步,可算是完成了一大半的工程了,不过我在下面的时候碰到了一个问题,就是应用程序在7寸屏运行的时候无法全屏化操作,即使我使用如下代码打印屏幕大小也始终显示320*480
DisplayMetrics
dm=new
DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
Toast.makeText(ButtonActivity.this,
Integer.toString(dm.heightPixels)+"
:
"
+Integer.toString(dm.widthPixels)
Toast.LENGTH_SHORT).show();
这个问题折腾了我一上午,上网查了一下也不得答案,着实让人郁闷。
问题截图如下:
仔细察看明细无法全屏,而是跟手机的尺寸大小一样,后来一同事说要指定目标SDK版本才可以,发了一小段代码给我放在配置文件上面,之后运行程序调试一下,果真可以实现全屏化。
代码如下:
uses-sdk
android:
targetSdkVersion="
4"
/>
加入上面代码运行效果如下:
经测试,发现版本号必须为4以上,才可支持适应全屏化,也就是说即便你写一个100也可以支持。
Tip:
使用真机调试和使用模拟器调试操作是相同的。
android真机调试的一些总结
android
2011-01-1010:
55:
54
阅读74
评论1
字号:
大中小
订阅
首先需要说明的是,标准版android和乐phone的android在某些方面都是不太兼容的,我在win7下,它们的模拟器和adb.exe就不太兼容。
1:
首先是要下载你手机的驱动,一般官网都会提供。
我这里就提供一个乐phone的(
2:
下载好后就安装。
然后在你的手机上设置调试模式(在:
设置->
开发->
USB调试,勾上就好了;
乐phone中就是:
系统设置->
应用程序设置->
USB调试)
3:
然后连接你的手机,在设备管理器中会识别成这样
4:
这一步要注意,如果你想识别出乐phone,就要使用乐phone提供的adb.exe,而不要用官方版的,所以:
d:
cd
D:
\Program\LEOS_mobile_sdk_1.7.0_101029_windows\tools
\Program\LEOS_mobile_sdk_1.7.0_101029_windows\tools>
adbdevices
adbserverisoutofdate.
killing...
*daemonstartedsuccessfully*
Listofdevicesattached
1234567890ABCDEF
device
Coolpad_N930
看到这个就说明连接成功了
5:
现在你可以在eclipse中用真机调试了
run->
runconfiguration->
设置manual就可以了,到时会让你选择可用的设备的
Android平台代码很多,关系也很复杂,通常我们调试程序的时候是无法跟踪到Androidframeworkcode里的,如果能调试跟踪Androidsourcecode将给我们这些初学者带来很多便利,本文将给出一个调试跟踪Androidsourcecode的方法。
1.
首先,得到Android源代码(可参考之前的文章--如何获取Android源代码并编译.doc),并且编译,得到outputfile,在(Androidsource)/out目录下,也可通过别的途径获取Androidsourcecode(以androidsrc.tgz为例)和别人编译好的outputfile(out.tgz)
2.
解压缩这两个tgz文件,并把解压出来的out目录放到myandroid目录下,如下图所示。
3.
拷贝myandroid\development\ide\eclipse\.classpath到myandroid\.classpath.
4.
拷贝myandroid\out\target\product\generic\*.img到{AndroidSDK}\tools\lib\images并且覆盖源文件.
5.
运行{AndroidSDK}\tools目录下的emulator.exe.
6.
运行{AndroidSDK}\tools目录下的ddms.bat。
你可以看到下面的窗口,里面会列出当前emulator里跑的进程:
7.
启动eclipse,按照这个步骤File->
New->
JavaProject(不是AndroidProject!
)->
Createprojectfromexistingsource选到myandroid目录.
8.
在经过长时间等待之后,Androidsourcecode将被导入project,正常情况下应该没有error,但是会有很多warning,如果有error后面的debug将不会成功,原因可能是outputfile,out.tgz在解压得过程中出错,重新copyout.tgz,或者完整拷贝out/目录到本地目录下,即可解决。
9.
选择想要调试的进程在DDMS,用phone进程为例,ddms一定要在eclipse之前启动,否则eclipse启动的时候也会启一个ddms,会造成冲突。
10.在eclipse里,Run->
DebugConfiguration->
RemoteJavaApplication->
New,设置Connectionportto8700(DDMS’s默认端口,你可以改变它).
11.设置断点在sourcecode,然后就可以像往常一样进行调试了。
真机usb调试
首先在真机里选择USB调试,具体的在:
Setting(设置)—>
Applications(应用程序)-->
Development(开发)USBdebugging(usb调试),将这个勾上,然后用usb数据线将真机与pc机连接
Android的调试原理--学习笔记
2009年06月06日星期六23:
17
/*今天学习了用Eclipse来调试Android的代码,首次使用,可能有的问题很基本,有问题请指出,交流嘛:
)*/
(笔记中提到的Emulator也可以理解成Device)
一、adb的介绍:
adb(AndroidDebugBridge)包括三个部分:
1)adbclient,运行在PC上(为DDMS,即IDE工作)
2)adbdaemon(守护进程),运行于Emulator(为与Emulator中的VM交互工作);
3)adbserver(服务进程),运行在PC(任务管理器上有),管理着adbclient和adbdaemon的通信.server与client通信的端口是是5037,
adbserver会与emulator交互的,使用的端口有两个,一个是5554专门用于与Emulator实例的连接,那么数据可以从Emulator转发给IDE控制台了,另一个则是5555,专门与adbdaemon连接为后面调试使用。
PS:
Emulator/Device占用两个(一组)端口,一个为偶数的5554,一个奇数的5555。
如果还开启其他的Emulator,则使用的另一组端口是5556,5557,一直到5585.
adbserver开启时就是通过查找5555-5585之间端口来建立与模拟器的连接的,建立连接后就可以用adb的相关命令了。
如果您安装了ADT就基本不需要adb的命令了(因为DDMS会调用ADB进行透明操作)
关于本机的端口使用情况可以使用netstat[-a][-n]来查询验证一下。
二、观察一组数据:
1,在开启仿真器时有一些打印:
[2009-06-0614:
04:
16-Helloworld]AndroidLaunch!
17-Helloworld]adbisrunningnormally.
17-Helloworld]Performingcom.android.hello.Helloworldactivitylaunch
17-Helloworld]AutomaticTargetMode:
PreferredAVD'
lab'
isnotavailable.Launchingnewemulator.
17-Helloworld]LaunchinganewemulatorwithVirtualDevice'
24-Helloworld]Newemulatorfound:
emulator-5554
24-Helloworld]WaitingforHOME('
android.process.acore'
)tobelaunched...
05:
45-Helloworld]HOMEisupondevice'
emulator-5554'
45-Helloworld]UploadingHelloworld.apkontodevice'
45-Helloworld]InstallingHelloworld.apk...
每一行都基本表示一个命令在执行,emulator-5554是仿真器的初始端口了。
最后一句等于命令:
adb-semulator-5554installhelloworld.apk
如果报了类似以下的错误,那得(加个-r)重装,因为该App已经在该Emulator下运行了
DDMdispatchregwaittimeout
Can'
tdispatchDDMchunk52454151:
nohandlerdefined
tdispatchDDMchunk48454c4f:
网上没有看到这个错误因此顺便提下解决方法:
adb-semulator-5554install-rhelloworld.apk
三,了解下DDMS:
(都是adb的命令相当的功能)
DDMS有几个界面:
1)Devices:
可以查看到当前运行的Emulator和其内运行的应用
2)Emulatorcontrol,即仿真器的硬件设置项等:
设置当前注册的网络状态(Home,Roaming,UnRegistered,Searching)
数据业务的速度设置:
有GSM,GPRS,EDGE,UMTS,HSDPA(3.5G?
)
还有载入KML或NMEA文件来模拟GPS数据
3)还可以查询Threads,Heap,FileExplorer、重启adb,抓屏等,其他都是在调用adb。
4)关于Logcat
从Windows->
Prereference->
android->
DDMS->
LogginLevel进行设置打印等级,
不过默认下只打印入口线程的信息,射频和Tapi的动作信息要通过adbLogcat-bradio打开,
os-events相关的打印通过adblogcat-bevents.打开,
Log默认被写入到手机的/data/anr/traces.txt文件中。
四,Debug面板
这个面板对于熟悉Eclipse的用户来说应该不用看了。
通过以下三步将自己的应用或将已经跑起来的应用加入调试列表:
1)选择Devices列表中Yourapp,
2)选择臭虫按钮将该程序加载进调试状态
3)OK,加断点吧。
不过源代码要最新的否则断点不起作用。
五、DDMS如何让IDE的调试工作起来呢?
1)有几个组成:
一个是adb(AndroidDebugBridge)参考第一部分,它起到调试桥的作用;
另一类是运行在Device/Emulator端的adbdaemon,VM,debugger,yourApplicatioin,
通过下面句话就可以理解它们的关系:
一个App跑在一个进程中,这个进程又被一个VM绑定,都是一对一的,但VM与Emulator显然是多对一的,
那调试时debugger从VM中拿到栈线程进程等信息,而daemon的作用仅仅是被DDMS用于建立一条连接(看下面)。
最后一类则是运行在PC上的DDMSdebugger;
这个debugger是IDE的调试器,你可以改成另一个调试器;
DDMS是DalvikDebugMonitorService,负责建立调试的作用,它仅有两个Service,其他的功能都是通过ADBclient.让IDE与Emulator交互起来的。
2)开启IDE时,DDMS会建立一个Devicemonitoringservice用于监控Emulator,因为可以开启多个Emulator嘛;
如果找到一个Emulator,那么DDMS才会再开启另一个Service叫VMMonitoringSevice用于监控该Emulator下的VM;
第一部分提到adb有三个部分,其中的adbclient可以多个实例的,DDMS的Service通过从ADBClient与ADbserver的交互结果来维护自身的数据。
如果VMMonitor找到Emulator的一个VM,那么DDMS会利用ADB获取目标VM的进程ID,
同时通过client与daemon建立起与vm的debugger的新连接,注意新连接的交互端口是从8600开始的(n个的话端口是8659+n),这条新连接可以让DDMS获得与VM的实际交互。
剩下的就是DDMS把拿到的数据再扔给ide的debugger(它们之间默认通过8700端口,可更改,因为与VM的交互端口从8600开始使用的话可能会不够的),
这样IDE的Debug视图就能正确工作了.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android 模拟器 调试 问题