Android开发和调试.docx
- 文档编号:24523097
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:15
- 大小:25.59KB
Android开发和调试.docx
《Android开发和调试.docx》由会员分享,可在线阅读,更多相关《Android开发和调试.docx(15页珍藏版)》请在冰豆网上搜索。
Android开发和调试
Android开发和调试
时间:
2008-12-0718:
02来源:
Android开发者作者:
Androidin点击:
1227次
[声明:
本中文文档不允许电玩巴士()旗下的任何网站、杂志、论坛进行转载或者引用此文内容,其他网站转载请注明出处]在eclipse上开发Android应用程序在用eclipseIDE开发android应用程序之前,你首先要创建一个Android工程,并且建立一个启动配置
在eclipse上开发Android应用程序
在用eclipseIDE开发android应用程序之前,你首先要创建一个Android工程,并且建立一个启动配置,在此之后你才可以开始编写,运行,以及调试你的应用程序。
以下章节是假设你已经在eclipse环境中安装了ADT插件,如果你没有安装,请安装之后再使用以下说明。
参考安装eclipse插件(ADT)
创建一个android工程
ADT提供了一个新的工程向导,你可以快速的创建一个新的工程或者在现有代码上创建工程。
创建工程的步骤如下:
选择File>New>Project
选择Android>AndroidProject,然后按下Next
选择项目内容:
选择Createnewprojectinworkspace,为编码创建一个全新的工程。
输入工程名称(projectname),基础软件包的名称(thebasepackagename),以及Activity类的名称。
以创建stub.java文件等文件和程序名字。
选择Createprojectfromexistingsource,为已有代码创建一个工程。
如果你想编译运行SDK中提供的示例程序,可以使用这个选项。
示例程序的存放在SDK的samples/目录下。
浏览包含已有代码的目录,点击ok,如果目录中包含有可用的androidmanifest文件,ADT将为你填写合适的软件包,activity,和应用程序名称。
按下Finish.
ADT插件会根据你的工程类型创建合适的文件和文件夹,如下:
src/包含stub.javaActivity文件的文件夹.
res/资源文件夹.
AndroidManifest.xml工程清单.
创建一个启动项
能够在eclipse上运行调试应用程序之前,你必须为它创建一个启动项。
启动项指定哪个工程将被启动,哪个activity开始工作,以及使用哪些模拟器选项等。
按照以下步骤为Eclipse版本的应用程序创建合适的启动项:
打开启动项管理工具。
在Eclipse3.3(Europa)的版本中,酌情选择Run>OpenRunDialog...orRun>OpenDebugDialog...。
在Eclipse3.4(Ganymede)版本中,酌情选择Run>RunConfigurations...orRun>DebugConfigurations...。
在左边的工程类型列表选择AndroidApplication选择,双击(或者点击右键选择new),创建一个新的启动项。
输入启动项名称。
在Android标签中,浏览要开始的工程和Activity。
在Target标签中,设置想要显示的屏幕及网络属性,以及其他任何模拟器启动选项。
你可以在Common标签中设置更多的选项.
按下Apply保存启动配置,或者按下Run或Debug()。
运行和调试应用程序
一旦你设定了工程和工程启动配置,你就可以按照以下的说明运行和调试应用程序了。
从eclipse主菜单,根据情况选择Run>Run或者Run>Debug,开始运行或者调试活动启动项。
注意,这里活动启动项是在运行配置管理中最最近一次选中的那个。
它不一定就是在EclipseNavigation面板中选择的程序(如果有的话)
设置和修改活动启动项,可以使用启动项管理工具。
如何获得启动项管理工具可以参考创建一个启动项
运行或调试应用程序将触发以下动作:
启动模拟器,如果他还没有开始运行。
编译工程,如果在上次编译的基础上修改过代码,将重新编译。
在模拟器上安装应用程序。
Run选项,开始运行程序。
Debug在"Waitfordebugger"模式下启动程序,然后打开调试窗口并将EclipseJava调试器和程序关联。
利用其他IDEs和工具开发Android应用程序
通常我们使用安装有ADT插件的eclipseEclipsewiththeADTplugin.来开发Android程序,这个插件将编辑,build和调试功能集成到IDE上。
然而,如果你想在其他的IDE上开发程序,例如IntelliJ,或者使用没有ADT插件的eclipse也可以。
SDK提供了安装,编译,调试应用程序所需要的工具。
创建一个android工程
AndroidSDK包含一个activityCreator的程序,它将为工程产生多个stub文件和一个build文件。
你可以用这个程序创建一个新的Android工程或者在现有代码上创建工程,如SDK中包含的例子。
对于Linux和Mac系统,SDK提供activityCreator.py,一个Python脚本,Windows上则是activityCreator.bat一个批处理脚本。
无论是哪种平台,用法是一样的。
按以下步骤运行activityCreator创建Android工程:
在命令行下,切换到SDK下的tools/目录下,为你的工程文件新建一个目录。
如果你是在现有代码上创建工程,切换到程序的根目录下。
运行activityCreator。
在命令行下,你必须指定完全合格的类名作为参数。
如果你是创建一个全新的工程,这个类代表的与它同名的stub类和脚本文件。
如果是在现有代码上创建工程,必须指定软件包中其中一个Activity类的名称。
命令选项的脚本包括:
--out
默认情况下输出目录为当前目录。
如果你想为工程文件创建一个新的目录,可以使用这个选项来指向它。
--ideintellij,在一个新的项目中生成IntelliJIDEA工程文件。
这里有个例子:
~/android_linux_sdk/tools$./activityCreator.py--outmyprojectyour.package.name.ActivityName
package:
your.package.name
out_dir:
myproject
activity_name:
ActivityName
~/android_linux_sdk/tools$
activityCreator脚本生成以下文件和目录(但是不能重写已有文件):
AndroidManifest.xml程序的清单文件,同时为工程指定Activity类。
build.xml一个Ant文件,用来编译/打包应用程序。
src/your/package/name/ActivityName.java你指定的输入Activity类。
your_activity.iml,your_activity.ipr,your_activity.iws[onlywiththe-ideintelliJflag]intelliJ工程文件
res/资源目录.
src/源代码目录.
bin/build脚本的输出目录.
现在你可以将开发文件夹移到任何地方,但是记住,必须使用tool/文件夹下的adb程序将文件发送到模拟器上。
因此你需要在你工作环境和tools/文件夹之间活动。
当然你需要避免移动SDK目录,因为它将打断编译脚本。
(再重新build之前需要手动更新SDK的映射路径)
编译android应用程序
使用activityCreator生成的Ant文件build.xml来编译程序
如果你没有,你可以通过ApacheAnthomepage得到Ant文件。
安装它,并确定它在你的可执行文件路径下。
呼叫Ant之前,你需声明JAVA_HOME环境变量,并将它设置为JDK的安装路径。
注意:
在windows上,JDK默认的安装路径为"ProgramFiles",这个路径将会引起Ant失败,因为路径中间有空格。
解决这个问题,你可以像这样指定环境变量JAVA_HOME:
JAVA_HOME=c:
\Prora~1\Java\然而简单的解决方法是将JDK安装在没有空格的目录下。
例如:
c:
\java\jdk1.6.0_02.
如果你还没有这么准备好,按照上面创建一个新的工程的介绍建立一个工程。
现在你可以为你的工程运行Ant编译文件,只需在build.xml同文件夹下输入ant即可。
每次修改原文件或是资源,都需要重新运行ant,它将把最新版的应用程序打包以便deploy.
运行Android程序
运行一个编译好的程序,你需要用adb工具将.apk文件加载到模拟器的/data/app/目录下,用法如下面介绍。
启动模拟器(命令行下运行sdk目录下的/tools/emulator)。
模拟器切换到主画面(最好不要在程序运行的时候向模拟器安装程序,可以按home键离开应用程序)。
运行adb,安装myproject/bin./
例如,安装LunarLander示例,命令行下,切换到SDK目录下的/sample/LunarLander子目录下,输入../../tools/adbinstallbin/LunarLander.apk
在模拟器中,打开可执行程序列表,卷动屏幕,选中并启动你的应用程序。
注意:
当你第一次安装一个Activity时,你可能需要在启动项显示之前,或者其它程序调用它之前重新启动模拟器。
因为软件包管理工具通常只有在模拟器启动时才能完全的审查manifests。
为程序附加调试器
这一节我们介绍如何在屏幕上显示调试信息(例如CPU使用率),以及如何将IDE和模拟器上运行的程序关联起来。
使用eclipse插件可以自动的生成调试器。
但你也可以通过配置IDES来监听调试端口得到调试信息。
启动DalvikDebugMonitorServer(DDMS)工具,它在IDE和模拟器之间扮演着端口转换服务的角色。
?
设置模拟器调试配置选项。
例如,等到调试信息被加载后才启动应用程序。
注意,很多调试选项无需DDMS也可以使用,例如模拟器上显示CPU的使用效率,或者屏幕的刷新频率。
配置IDE,使得调试时IDE与8700端口关联.howtosetupEclipsetodebugyourproject.包含以下信息。
配置IDE附加调试端口
DDMS将为每一个虚拟机分配一个特殊的调试端口,这个端口在模拟器上可以找到。
你必须将你的IDE与此端口(虚拟机上信息栏中有列出这些端口)关联或者是默认的端口8700。
这样可以使IDE连接到模拟器上程序列表中的任一个程序。
你的IDE需要能够关联模拟器上正在运行的程序,显示它的线程,并允许你挂起它,检查它的状态,设置断点。
如果你在开发设置面板选择了“等待调试”,应用程序将等到Eclipse连接后才运行,所以你需要在连接之前设置断点。
修改正在调试的程序,或者在当前程序运行时选择“等待调试”将引起系统杀死这个应用程序。
如果你的程序处于一种坏的状态,你可以使用方式杀死它,方法很简单,只需要设置和钩掉复选框。
应用程序签名
Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序。
不管是模拟器还是真实设备,只要是android系统,这都适用。
鉴于此原因,在设备或者是模拟器上运行调试程序之前,你必须为你的应用程序设置数字签名。
理解android程序签名的重要几点:
:
所有的程序都必须签名,没有被签名的程序,系统将不能安装。
你可使用自签署证书签署你的应用程序,必须是无凭证授权是的。
系统仅仅会在安装的时候测试签名证书的有效期,如果应用程序的签名是在安装之后才到期,那么应用程序仍然可以正常启用。
你可以使用标准工具-KeytoolandJarsigner-生成密钥,来签名应用程序的.apk文件。
AndroidSDK工具可以帮助你在调试时给应用程序签名。
ADT插件和Ant编译工具都提供了两种签名模式-debug模式和release模式
debug模式下,编译工具使用JDK中的通用程序Keytool通过已知方法和密码创建秘锁和密钥。
每次编译的时候,工具使用debug密钥签名应用程序的.apk文件。
因为密码是已知的,工具不需要在每次编译的时候提示你输入密锁和密钥。
当你的应用程序已经准备release了,你可以在release模式下编译。
release模式下,工具编译时不会将.apk文件签名。
你需要用Keytool生成密钥和密锁,再用JDK中的Jarsigner工具给.apk文件签名。
签名基本设置
为了支持生成密锁和密钥,你首先要确定Keytool在SDK编译工具中是有效的。
在很多情况下,你可以设置JAVA_HOME环境变量,告诉SDK如何找到Keytool,或者你可以在PATH变量中添加Keytool的JDK版本。
如果你是在linux版本中开发,原本是来自JavaGnu编译器,请确定系统用的是Keytool版本的JDK,而不是gcj版本的。
如果Keytool已经在PATH中,它将指向符号连接/usr/bin/keytool。
这种情况下,核实符号连接的目标是指向JDK下的Keytool
Eclipse/ADT中的签名
如果你是在Eclipse下开发,并已经按照上面所介绍的安装了Keytool,默认情况下是可以在debug模式下签名的。
当你运行调试程序的时候ADK将给.apk文件签名,并安装到模拟器上。
这部分不需要特殊的动作,ADT已经进入Keytool
在release模式下编译程序,在Package面版上按project右键,选择AndroidTools>ExportApplicationPackage.或者你可以点击ManifestEditor,overview页面上的“Exportingtheunsigned.apk”连接,导出未签名apk文件。
保存.apk文件之后,用Jarsigner及你自己的密钥给apk文件签名,如果没有密钥,你可以用Keystore创建密钥和密锁。
如果已经有一个密钥了,如公共密钥,就可以给.apk文件签名了。
Ant签名
如果用Ant编译.apk文件,假设你使用最新版的SDK中包含的activitycreator工具生成build.xml文件,默认情况下可以使用debug签名模式。
当你运行Ant对build.xml编译程序,build脚本将生成密锁和密钥并签名.apk文件。
这部分不需要做其它特殊的动作。
release模式下编译程序,你需要做的是在Ant命令中指定编译目标“release”。
例如,如果是在bulid.xml所在目录下运行ant,输入以下命令:
antrelease
build脚本编译程序时并没有签名。
编译完.apk文件后,你需要用Jarsigner和你自己的密钥给.apk文件签名。
如果没有密钥,你可以用Keystore创建密钥和密锁。
如果已经有一个密钥了,如公共密钥,你就可以给.apk文件签名了。
调试证书期限
自签名证书用于程序的debug模式下(默认情况下是Eclipse/ADT和Antbuilds),自它创建时间起有一年的期限。
当证书到期时,将会有编译错误。
And下错误显示如下:
debug:
[echo]Packagingbin/samples-debug.apk,andsigningitwithadebugkey...
[exec]DebugCertificateexpiredon8/4/083:
43PM
在Eclipse/ADT下,你可以看到类似的错误。
解决这个问题的简单方法是删除debug.keystore文件。
Linux/MacOSX下这个文件保存在~/.android下,windowsXP下,文件保存在C:
\DocumentsandSettings\
windowsVista下文件保存在C:
\Users\
下次编译时,编译工具将生成新的密锁和密钥。
注意:
如果你的开发设备使用的是non-Gregorianlocale,编译工具经常错误的生成一个过期的调试证书,因此编译的时候你会得到错误提示。
对于解决信息,请参见疑难解答专题Ican'tcompilemyappbecausethebuildtoolsgeneratedanexpireddebugcertificate.
使用ApiDemo示例应用程序
AndroidSDK包含了一套示例程序,他们验证了许多功能以及API的用法。
ApiDemos软件包被提前安装在模拟器中,所以你可以启动模拟器,在主画面的应用程序抽屉里打开它。
你也可以在
如果你愿意,你还可以将ApiDemo的示例程序作为一个工程加载进来,修改并在模拟器上运行。
然而,在这之前你首先要卸载之前已经安装的ApiDemos。
如果你没有移除之前安装的版本而直接在开发环境中运行或修改ApiDemos,将会有安装错误。
关于如何卸载和重装ApiDemo,可以参考Ican'tinstallApiDemosappsinmyIDEbecauseofasigningerror.这样你就可以在你的开发环境中工作了。
调试
Android有相当广泛的一套工具帮助你调试你的应用程序:
DDMS-一个生动的程序,它支持端口转换(因此你可以在IDE中给你的代码下端点),支持抓取模拟器屏幕,线程和堆栈信息,以及许多其他功能。
你还可以运行logcat重新获得Log信息。
点击此连接查看更多信息。
logcat-转储系统信息,这些信息包括,模拟器抛出错误时堆栈的运行过程以及日志信息。
运行logcat,点击此连接。
...
I/MemoryDealer(763):
MemoryDealer(this=0x54bda0):
Creating2621440bytesheapat0x438db000
I/Logger(1858):
getView()requestingitemnumber0
I/Logger(1858):
getView()requestingitemnumber1
I/Logger(1858):
getView()requestingitemnumber2
D/ActivityManager(763):
Stopping:
HistoryRecord{409dbb20com.android.home.AllApps}
...
AndroidLog-输出模拟器上log文件信息日志类。
如果你在DDMS上运行了logcat,你可以实时阅读这些信息。
在你的代码中添加logging方法的调用。
使用log类,你可以根据你想获得信息的重要程度不同调用Log.v(verbose),Log.d()(debug),Log.i()(information),Log.w()(warning)或者Log.e(error).来分派log信息Log.i("MyActivity","MyClass.getView()—Requestingitemnumber"+position)
你可以用logcat阅读这些信息。
Traceview-Android可以将函数的调用情况以及调用时间保存到一个log文件中,你可以用图形阅读器Traceview查看详细内容。
更多信息查看这个连接下的主题
Eclipseplugin-Eclipse插件整合了相当数量的工具(ADB,DDMS,logcatoutput,以及其它功能),点击此连接查看更多信息。
DebugandTestDeviceSettings-Android揭示了很多有用的设定,例如CPU使用率和帧速率,参看下面的DebugandTestSettingsontheEmulator
Also,seetheTroubleshootingsectionofthedoctofigureoutwhyyourapplicationisn'tappearingontheemulator,orwhyit'snotstarting.
此外,参看疑难解答这一节文档,以找出您的应用程序为什么没有出现在模拟器上,或为什么不开始。
设备上的调试和测试设置
Android允许你设置多个设定以便你测试和调试程序。
获得模拟器的开发设置,可以选择DevTools>DevelopmentSettings。
按照以下选项将打开开发设置页(或其中之一):
Debugapp选择要被调试的程序,你不需要设置这个来关联调试器,但是这个变量有两个作用:
防止Android在调试的断点处长时间停留时抛出错误。
允许你选择WaitforDebugger选项来暂停程序启动,直到调试器被关联上(如下介绍)
Waitfordebugger阻塞程序加载直到关联上调试器。
这样你可以在onCreate()中设置端点,这在调试Activity的启动进程时很重要。
当你改变这个选项,任何当前运行的程序实例将被杀死。
为选中此框,你必须如上面介绍的选择一个调试程序。
这和在代码中添加waitForDebugger()是一样的。
Immediatelydestroyactivities告诉系统只要activity停止了就销毁它。
(犹如Android必须回收内存).这个在测试onSaveInstanceState(Bundle)/onCreate(android.os.Bundle)代码路径时非常有用,否则将难以生效.选择这个选项可能带来很多问题,因为他们没有保存程序的状态。
Showscreenupdates选中这个选项时,屏幕上任何被重绘的矩形区域会闪现粉红色。
这对于发现屏幕不必要的绘图很有用。
ShowCPUusage在屏幕顶端显示一个CPU进度,显示CPU的使用情况。
上面红色栏显示总的CPU使用率,下方绿色栏显示目前画面的CPU使用时间。
注意:
一旦打开次功能就不能关掉,除非重新启动模拟器。
?
?
?
Showbackground没有activity屏幕显示时显示背景面板,这个通常在调试的时候才会发生。
模拟器重起后这些设置仍被记忆。
顶端调试技巧
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 开发 调试
![提示](https://static.bdocx.com/images/bang_tan.gif)