【Android源码 栏目提醒】:网学会员鉴于大家对Android源码 十分关注,论文会员在此为大家搜集整理了“Android中文文档 开发和调试 eclipse - 综合课件”一文,供大家参考学习
Android中文文档 开发和调试 eclipse 在eclipse上开发
Android应用程序在用eclipse IDE开发
android应用程序之前你首先要创建一个
Android工程并且建立一个启动配置在此之后你才可以开始编写运行以及调试你的应用程序。
以下章节是假设你已经在eclipse环境中安装了ADT插件如果你没有安装请安装之后再使用以下说明。
参考安装eclipse插件ADT创建一个
android工程ADT提供了一个新的工程向导你可以快速的创建一个新的工程或者在现有代码上创建工程。
创建工程的步骤如下选择File New Project选择
Android Android Project然后按下Next选择项目内容选择Create new project in workspace为编码创建一个全新的工程。
输入工程名称project name基础软件包的名称the base package name以及Activity类的名称。
以创建stub.java文件等文件和程序名字。
选择Create project from existing source为已有代码创建一个工程。
如果你想编译运行SDK中提供的示例程序可以使用这个选项。
示例程序的存放在SDK的samples/目录下。
浏览包含已有代码的目录点击ok如果目录中包含有可用的
android manifest文件ADT将为你填写合适的软件包activity和应用程序名称。
按下Finish.ADT插件会根据你的工程类型创建合适的文件和文件夹如下src/包含stub.java Activity文件的文件夹.res/资源文件夹.AndroidManifest.xml工程清单.创建一个启动项能够在eclipse上运行调试应用程序之前你必须为它创建一个启动项。
启动项指定哪个工程将被启动哪个activity开始工作以及使用哪些模拟器选项等。
按照以下步骤为Eclipse版本的应用程序创建合适的启动项打开启动项管理工具。
在Eclipse 3.3Europa的版本中酌情选择Run Open Run Dialog.or Run Open Debug Dialog.。
在Eclipse 3.4Ganymede版本中酌情选择Run Run Configurations.or Run Debug Configurations.。
在左边的工程类型列表选择
Android Application选择双击或者点击右键选择new创建一个新的启动项。
输入启动项名称。
在
Android标签中浏览要开始的工程和Activity。
在Target标签中设置想要显示的屏幕及网络属性以及其他任何模拟器启动选项。
你可以在Common标签中设置更多的选项.按下Apply保存启动配置或者按下Run或Debug。
运行和调试应用程序一旦你设定了工程和工程启动配置你就可以按照以下的说明运行和调试应用程序了。
从eclipse主菜单根据情况选择Run Run或者Run Debug开始运行或者调试活动启动项。
注意这里活动启动项是在运行配置管理中最最近一次选中的那个。
它不一定就是在Eclipse Navigation面板中选择的程序如果有的话设置和修改活动启动项可以使用启动项管理工具。
如何获得启动项管理工具可以参考创建一个启动项运行或调试应用程序将触发以下动作启动模拟器如果他还没有开始运行。
编译工程如果在上次编译的基础上修改过代码将重新编译。
在模拟器上安装应用程序。
Run选项开始运行程序。
Debug在quotWait for debuggerquot模式下启动程序然后打开调试窗口并将Eclipse Java调试器和程序关联。
利用其他IDEs和工具开发
Android应用程序通常我们使用安装有ADT插件的eclipse Eclipse with the ADT plugin.来开发
Android程序这个插件将编辑build和调试功能集成到IDE上。
然而如果你想在其他的IDE上开发程序例如IntelliJ或者使用没有ADT插件的eclipse也可以。
SDK提供了安装编译调试应用程序所需要的工具。
创建一个
android工程
Android SDK包含一个activityCreator的程序它将为工程产生多个stub文件和一个build文件。
你可以用这个程序创建一个新的
Android工程或者在现有代码上创建工程如SDK中包含的例子。
对于Linux和Mac系统SDK提供activityCreator.py一个Python脚本Windows上则是activityCreator.bat一个批处理脚本。
无论是哪种平台用法是一样的。
按以下步骤运行activityCreator创建
Android工程在命令行下切换到SDK下的tools/目录下为你的工程文件新建一个目录。
如果你是在现有代码上创建工程切换到程序的根目录下。
运行activityCreator。
在命令行下你必须指定完全合格的类名作为参数。
如果你是创建一个全新的工程这个类代表的与它同名的stub类和脚本文件。
如果是在现有代码上创建工程必须指定软件包中其中一个Activity类的名称。
命令选项的脚本包括--out folder设定输出目录。
默认情况下输出目录为当前目录。
如果你想为工程文件创建一个新的目录可以使用这个选项来指向它。
--ide intellij在一个新的项目中生成IntelliJ IDEA工程文件。
这里有个例子/
android_linux_sdk/tools./activityCreator.py--out myproject your.package.name.ActivityName packageyour.package.name out_dirmyproject activity_nameActivityName/
android_linux_sdk/toolsactivityCreator脚本生成以下文件和目录但是不能重写已有文件AndroidManifest.xml程序的清单文件同时为工程指定Activity类。
build.xml一个Ant文件用来编译/打包应用程序。
src/your/package/name/ActivityName.java你指定的输入Activity类。
your_activity.imlyour_activity.ipryour_activity.iwsonly with the-ide intelliJ flagintelliJ工程文件res/资源目录.src/源代码目录.bin/build脚本的输出目录.现在你可以将开发文件夹移到任何地方但是记住必须使用tool/文件夹下的adb程序将文件发送到模拟器上。
因此你需要在你工作环境和tools/文件夹之间活动。
当然你需要避免移动SDK目录因为它将打断编译脚本。
再重新build之前需要手动更新SDK的映射路径编译
android应用程序使用activityCreator生成的Ant文件build.xml来编译程序如果你没有你可以通过Apache Ant home page得到Ant文件。
安装它并确定它在你的可执行文件路径下。
呼叫Ant之前你需声明JAVA_HOME环境变量并将它设置为JDK的安装路径。
注意在windows上JDK默认的安装路径为quotProgram Filesquot这个路径将会引起Ant失败因为路径中间有空格。
解决这个问题你可以像这样指定环境变量JAVA_HOMEJAVA_HOMEcProra1Java然而简单的解决方法是将JDK安装在没有空格的目录下。
例如cjavajdk1.6.0_02.如果你还没有这么准备好按照上面创建一个新的工程的介绍建立一个工程。
现在你可以为你的工程运行Ant编译文件只需在build.xml同文件夹下输入ant即可。
每次修改原文件或是资源都需要重新运行ant它将把最新版的应用程序打包以便deploy.运行
Android程序运行一个编译好的程序你需要用adb工具将.apk文件加载到模拟器的/data/app/目录下用法如下面介绍。
启动模拟器命令行下运行sdk目录下的/tools/emulator。
模拟器切换到主画面最好不要在程序运行的时候向模拟器安装程序可以按home键离开应用程序。
运行adb安装myproject/bin./appname.apk文件。
例如安装Lunar Lander示例命令行下切换到SDK目录下的/sample/LunarLander子目录下输入././tools/adb install bin/LunarLander.apk在模拟器中打开可执行程序列表卷动屏幕选中并启动你的应用程序。
注意当你第一次安装一个Activity时你可能需要在启动项显示之前或者其它程序调用它之前重新启动模拟器。
因为软件包管理工具通常只有在模拟器启动时才能完全的审查manifests。
为程序附加调试器这一节我们介绍如何在屏幕上显示调试信息例如CPU使用率以及如何将IDE和模拟器上运行的程序关联起来。
使用eclipse插件可以自动的生成调试器。
但你也可以通过配置IDES来监听调试端口得到调试信息。
启动Dalvik Debug Monitor ServerDDMS工具它在IDE和模拟器之间扮演着端口转换服务的角色。
设置模拟器调试配置选项。
例如等到调试信息被加载后才启动应用程序。
注意很多调试选项无需DDMS也可以使用例如模拟器上显示CPU的使用效率或者屏幕的刷新频率。
配置IDE使得调试时IDE与8700端口关联.how to set up Eclipse to debug your project.包含以下信息。
配置IDE附加调试端口DDMS将为每一个虚拟机分配一个特殊的调试端口这个端口在模拟器上可以找到。
你必须将你的IDE与此端口虚拟机上信息栏中有列出这些端口关联或者是默认的端口8700。
这样可以使IDE连接到模拟器上程序列表中的任一个程序。
你的IDE需要能够关联模拟器上正在运行的程序显示它的线程并允许你挂起它检查它的状态设置断点。
如果你在开发设置面板选择了quot等待调试quot应用程序将等到Eclipse连接后才运行所以你需要在连接之前设置断点。
修改正在调试的程序或者在当前程序运行时选择quot等待调试quot将引起系统杀死这个应用程序。
如果你的程序处于一种坏的状态你可以使用方式杀死它方法很简单只需要设置和钩掉复选框。
应用程序签名
Android系统要求所有的程序经过数字签名才能安装如果没有可用的数字签名系统将不许安装运行此程序。
不管是模拟器还是真实设备只要是
android系统这都适用。
鉴于此原因在设备或者是模拟器上运行调试程序之前你必须为你的应用程序设置数字签名。
理解
android程序签名的重要几点所有的程序都必须签名没有被签名的程序系统将不能安装。
你可使用自签署证书签署你的应用程序必须是无凭证授权是的。
系统仅仅会在安装的时候测试签名证书的有效期如果应用程序的签名是在安装之后才到期那么应用程序仍然可以正常启用。
你可以使用标准工具-Keytool and Jarsigner-生成密钥来签名应用程序的.apk文件。
Android SDK工具可以帮助你在调试时给应用程序签名。
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版本中开发原本是来自Java Gnu编译器请确定系统用的是Keytool版本的JDK而不是gcj版本的。
如果Keytool已经在PATH中它将指向符号连接/usr/bin/keytool。
这种情况下核实符号连接的目标是指向JDK下的Keytool Eclipse/ADT中的签名如果你是在Eclipse下开发并已经按照上面所介绍的安装了Keytool默认情况下是可以在debug模式下签名的。
当你运行调试程序的时候ADK将给.apk文件签名并安装到模拟器上。
这部分不需要特殊的动作ADT已经进入Keytool在release模式下编译程序在Package面版上按project右键选择
Android Tools Export Application Package.或者你可以点击Manifest Editoroverview页面上的quotExporting the unsigned.apkquot连接导出未签名apk文件。
保存.apk文件之后用Jarsigner及你自己的密钥给apk文件签名如果没有密钥你可以用Keystore创建密钥和密锁。
如果已经有一个密钥了如公共密钥就可以给.apk文件签名了。
Ant签名如果用Ant编译.apk文件假设你使用最新版的SDK中包含的activitycreator工具生成build.xml文件默认情况下可以使用debug签名模式。
当你运行Ant对build.xml编译程序build脚本将生成密锁和密钥并签名.apk文件。
这部分不需要做其它特殊的动作。
release模式下编译程序你需要做的是在Ant命令中指定编译目标quotreleasequot。
例如如果是在bulid.xml所在目录下运行ant输入以下命令ant release build脚本编译程序时并没有签名。
编译完.apk文件后你需要用Jarsigner和你自己的密钥给.apk文件签名。
如果没有密钥你可以用Keystore创建密钥和密锁。
如果已经有一个密钥了如公共密钥你就可以给.apk文件签名了。
调试证书期限自签名证书用于程序的debug模式下默认情况下是Eclipse/ADT和Ant builds自它创建时间起有一年的期限。
当证书到期时将会有编译错误。
And下错误显示如下debugechoPackaging bin/samples-debug.apkand signing it with adebug key.execDebug Certificate expired on 8/4/08 343 PM在Eclipse/ADT下你可以看到类似的错误。
解决这个问题的简单方法是删除debug.keystore文件。
Linux/Mac OSX下这个文件保存在/.
android下windows XP下文件保存在CDocuments and SettingsuserLocal SettingsApplication DataAndroid。
windows Vista下文件保存在CUsersuserAppDataLocalAndroid。
下次编译时编译工具将生成新的密锁和密钥。
注意如果你的开发设备使用的是non-Gregorian locale编译工具经常错误的生成一个过期的调试证书因此编译的时候你会得到错误提示。
对于解决信息请参见疑难解答专题I cant compile my app because the build tools generated an expired debug certificate.使用ApiDemo示例应用程序
Android SDK包含了一套示例程序他们验证了许多功能以及API的用法。
ApiDemos软件包被提前安装在模拟器中所以你可以启动模拟器在主画面的应用程序抽屉里打开它。
你也可以在SDK/samples/ApiDemos中找到
源码可用看看它学习Demo的实现方法。
如果你愿意你还可以将ApiDemo的示例程序作为一个工程加载进来修改并在模拟器上运行。
然而在这之前你首先要卸载之前已经安装的ApiDemos。
如果你没有移除之前安装的版本而直接在开发环境中运行或修改ApiDemos将会有安装错误。
关于如何卸载和重装ApiDemo可以参考I cant install ApiDemos apps in my IDE because of asigning error.这样你就可以在你的开发环境中工作了。
调试
Android有相当广泛的一套工具帮助你调试你的应用程序DDMS-一个生动的程序它支持端口转换因此你可以在IDE中给你的代码下端点支持抓取模拟器屏幕线程和堆栈信息以及许多其他功能。
你还可以运行logcat重新获得Log信息。
点击此连接查看更多信息。
logcat-转储系统信息这些信息包括模拟器抛出错误时堆栈的运行过程以及日志信息。
运行logcat点击此连接。
.I/MemoryDealer763MemoryDealerthis0x54bda0Creating 2621440 bytes heap at 0x438db000 I/Logger1858getViewrequesting item number 0I/Logger1858getViewrequesting item number 1I/Logger1858getViewrequesting item number 2D/ActivityManager763StoppingHistoryRecord409dbb20 com.
android.home.AllApps.
Android Log-输出模拟器上log文件信息日志类。
如果你在DDMS上运行了logcat你可以实时阅读这些信息。
在你的代码中添加logging方法的调用。
使用log类你可以根据你想获得信息的重要程度不同调用Log.vverboseLog.ddebugLog.iinformationLog.wwarning或者Log.eerror.来分派log信息Log.iquotMyActivityquotquotMyClass.getView-Requesting item numberquotposition你可以用logcat阅读这些信息。
Traceview-
Android可以将函数的调用情况以及调用时间保存到一个log文件中你可以用图形阅读器Traceview查看详细内容。
更多信息查看这个连接下的主题Eclipse plugin-Eclipse插件整合了相当数量的工具ADBDDMSlogcat output以及其它功能点击此连接查看更多信息。
Debug and Test Device Settings-
Android揭示了很多有用的设定例如CPU使用率和帧速率参看下面的Debug and Test Settings on the Emulator Alsosee the Troubleshooting section of the doc to figure out why your application isnt appearing on the emulatoror why its not starting.此外参看疑难解答这一节文档以找出您的应用程序为什么没有出现在模拟器上或为什么不开始。
设备上的调试和测试设置
Android允许你设置多个设定以便你测试和调试程序。
获得模拟器的开发设置可以选择Dev Tools Development Settings。
按照以下选项将打开开发设置页或其中之一Debug app选择要被调试的程序你不需要设置这个来关联调试器但是这个变量有两个作用防止
Android在调试的断点处长时间停留时抛出错误。
允许你选择Wait for Debugger选项来暂停程序启动直到调试器被关联上如下介绍Wait for debugger阻塞程序加载直到关联上调试器。
这样你可以在onCreate中设置端点这在调试Activity的启动进程时很重要。
当你改变这个选项任何当前运行的程序实例将被杀死。
为选中此框你必须如上面介绍的选择一个调试程序。
这和在代码中添加waitForDebugger是一样的。
Immediately destroy activities告诉系统只要activity停止了就销毁它。
犹如
Android必须回收内存.这个在测试onSaveInstanceStateBundle/onCreateandroid.os.Bundle代码路径时非常有用否则将难以生效.选择这个选项可能带来很多问题因为他们没有保存程序的状态。
Show screen updates选中这个选项时屏幕上任何被重绘的矩形区域会闪现粉红色。
这对于发现屏幕不必要的绘图很有用。
Show CPU usage在屏幕顶端显示一个CPU进度显示CPU的使用情况。
上面红色栏显示总的CPU使用率下方绿色栏显示目前画面的CPU使用时间。
注意一旦打开次功能就不能关掉除非重新启动模拟器。
Show background没有activity屏幕显示时显示背景面板这个通常在调试的时候才会发生。
模拟器重起后这些设置仍被记忆。
顶端调试技巧快速堆栈转储从模拟器上获得堆转储你可以登录adb shell用quotpsquot命令找到你想要的进程然后用quotkill-3quot堆栈使用轨迹将显示在log文件中。
在模拟器屏幕上显示有用信息设备可以显示一些有用信息例如CPU使用率以及高亮显示重绘区域。
可以在开发设定窗口打开和关闭这些功能。
Setting debug and test configurations on the emulator.中有详细介绍。
你可以通过Dalvik Debug Monitor Service工具获得转储状态信息。
请参考adb中介绍的dumpsys and dumpstate获得模拟器中应用程序状态信息dumpsys你可以通过Dalvik Debug Monitor Service工具获得dumpsys信息。
参考adb中介绍的dumpsys and dumpstate。
获得无线连接信息你可以通过Dalvik Debug Monitor Service工具获得无线连接信息。
在Device菜单中选择quotDump radio statequot记录跟踪数据你可以在activity中通过调用
android.os.Debug.startMethodTracing来记录函数的调用以及其它跟踪数据。
详细的参考Running the Traceview Debugging Program。
记录无线数据默认情况下系统不记录无线数据数据很多。
然而你可以用下面的命令记录无线数据adb shell logcat-b radio运行adb
Android有adb工具他提供了许多功能包括移动和同步文件到模拟器上改变端口在模拟器上运行UNIX shell。
详见Using adb。
获得模拟器屏幕截图Dalvik Debug Monitor ServerDDMS可以抓取模拟器屏幕截图。
使用调试帮助类
Android为方便使用提供了调试帮助类例如util.Log和Debug编译安装Anroid应用程序
Android要求专门的编译工具可以正确的编译资源文件和应用程序的其他部分因此你必须为你的应用程序建立一个专门的编译环境。
专门
Android编译器编译步骤包括编译XML和其他资源文件并创建合适的输出格式。
编译好的
Android应用程序是一个.apk压缩文件它含有.dex文件资源文件原data文件以及其他文件。
你可以通过scratch或者源文件构造一个合适的
Android工程。
Android目前不支持的在本地代码上开发第三方应用程序。
比较推荐的Andriod应用程序开发方法是use Eclipse with the
Android plugin它支持编译运行调试
Android应用程序。
如果你还有其他IDEAndroid provides tools for other IDEs可以编译运行
Android应用程序但是他们不是很完整。
移出一个
Android应用程序移出一个安装在模拟器上的应用程序你需要执行adbrun adb删除.apk文件。
.apk文件是在安装的时候发送到模拟器上的。
使用adb shell进入设备的shell切换到data/app目录下用rm命令删除apk文件rm your_app.apk。
用法在连接中介绍。
Eclipse技巧在Eclipse上执行任意java代码在Eclipse上当程序停在断点处时你可以执行任意代码。
例如在一个含有quotzipquot字符串参数的函数中你可以获得软件包信息调用类方法。
你也可以执行任意静态方法如输入
android.os.Debug.startMethodTracing启.