android真机和模拟器调试问题.docx

上传人:b****6 文档编号:6555925 上传时间:2023-01-07 格式:DOCX 页数:16 大小:497.51KB
下载 相关 举报
android真机和模拟器调试问题.docx_第1页
第1页 / 共16页
android真机和模拟器调试问题.docx_第2页
第2页 / 共16页
android真机和模拟器调试问题.docx_第3页
第3页 / 共16页
android真机和模拟器调试问题.docx_第4页
第4页 / 共16页
android真机和模拟器调试问题.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

android真机和模拟器调试问题.docx

《android真机和模拟器调试问题.docx》由会员分享,可在线阅读,更多相关《android真机和模拟器调试问题.docx(16页珍藏版)》请在冰豆网上搜索。

android真机和模拟器调试问题.docx

android真机和模拟器调试问题

Android模拟器调试与真机调试

一、  模拟器调试与真机调试

1.          模拟器调试

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

2.          真机调试

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

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

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

$adbdevices正常调试

4)         注意:

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

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

$killalladb

3.          Eclipse中调试

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

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

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

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

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

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

$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中添加

icon="@drawable/icon"android:

label="@string/app_name"android:

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版本才可以,发了一小段代码给我放在配置文件上面,之后运行程序调试一下,果真可以实现全屏化。

代码如下:

 

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

D:

\Program\LEOS_mobile_sdk_1.7.0_101029_windows\tools>adbdevices

adbserverisoutofdate. killing...

*daemonstartedsuccessfully*

Listofdevicesattached

1234567890ABCDEF    device

Coolpad_N930  device

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

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!

[2009-06-0614:

04:

17-Helloworld]adbisrunningnormally.

[2009-06-0614:

04:

17-Helloworld]Performingcom.android.hello.Helloworldactivitylaunch

[2009-06-0614:

04:

17-Helloworld]AutomaticTargetMode:

PreferredAVD'lab'isnotavailable.Launchingnewemulator.

[2009-06-0614:

04:

17-Helloworld]LaunchinganewemulatorwithVirtualDevice'lab'

[2009-06-0614:

04:

24-Helloworld]Newemulatorfound:

emulator-5554

[2009-06-0614:

04:

24-Helloworld]WaitingforHOME('android.process.acore')tobelaunched...

[2009-06-0614:

05:

45-Helloworld]HOMEisupondevice'emulator-5554'

[2009-06-0614:

05:

45-Helloworld]UploadingHelloworld.apkontodevice'emulator-5554'

[2009-06-0614:

05:

45-Helloworld]InstallingHelloworld.apk...

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

最后一句等于命令:

adb-semulator-5554installhelloworld.apk

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

DDMdispatchregwaittimeout

Can'tdispatchDDMchunk52454151:

nohandlerdefined

Can'tdispatchDDMchunk48454c4f:

nohandlerdefined

网上没有看到这个错误因此顺便提下解决方法:

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视图就能正确工作了.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1