Intro\installing
From Android中文网
目录 |
[编辑] 安装SDK
[编辑] 下载SDK
本页介绍了如何安装Android的SDK开发包和配置开发环境。如果你还没有下载SDK,点击下面的链接开始
Download the SDK
[编辑] 系统和软件配置要求
要通过Android SDK中提供的代码和工具进行Android应用程序的开发,需要一个合适的用于开发的电脑和合适的开发环境,具体要求如下:
支持的操作系统
- Windows XP 或者 Vista
- Mac OS X 10.4.8 或更新的版本(只支持x86架构)
- Linux(在Ubuntu Dapper Drake上测试过)
支持的开发环境
- Eclipse
- Eclipse 3.2,3.3(Europa)
- Android开发工具插件(可选)
- 其他的开发环境或者IDE
- JDK5.0或者JDK6.0(仅有JRE是不够的)
- 与GNU的Java编译器不兼容
- Apache Ant对Linux和Mac版本需要1.6.5或更新,对Windows版本需要1.7或更新
[编辑] 安装SDK
下载好SDK包后,将zip文件解压缩至合适的地方。在下文中,我们默认你的SDK安装目录为$SDK_ROOT 你可以选择将$SDK_ROOT/tools加入到你的路径中
- Linux下,打开文件~/.bash_profile或者~/.bashrc,找到设定PATH环境变量的一行,将$SDK_ROOT/tools的完整路径加入其中。如果没有找到设定PATH变量的行,你可以自己添加一行:
export PATH=${PATH}:<你的$SDK_ROOT/tools的完全路径>
- Mac下,在你的home目录中找到文件.bash_profile,和Linux的一样处理。如果还没有在机器上设定这个文件,你可以创建一个.bash_profile文件。
- Windows下,右键点击【我的电脑】,选择【属性】,在【高级】页中,点击【环境变量】按键,在弹出的对话框中双击“系统变量”中的变量“Path”,将$SDK/tools的完全路径加入其中。
通过将$SDK/tools加入系统路径,在运行adb和其它一些命令行工具时就不需要键入完全路径名了。需要注意到是,当你升级了SDK后,如果安装路径有变动的话,不要忘记了更新你的PATH变量的设置,将其指向变动后的路径。
[编辑] 安装Eclipse插件(ADT)
如果你选择Eclipse作为Android的开发环境,可以安装一个专门为Android定制的插件:Android Development Tools(ADT),ADT插件集成
了对Android工程和工具的支持,它包含了大量功能强大的扩展,使得创建、运行、调试Android程序更简单更快捷。
如果你不打算使用Eclipse,那么就不需要下载或者安装ADT插件。
为了下载和安装ADT插件,请按照下面的步骤设置Eclipse的远程更新站点:
- 启动Eclipse,依次选择Help > Software Updates > Find and Install....
- 在弹出的窗口中,选择Search for new features to install,然后点击Next
- 点击New Remote Site
- 在弹出的对话框中,为远程站点输入一个自定义的名字(例如:Android Plugin),然后输入下面的内容作为其默认的URL:然后点击OK
https://dl-ssl.google.com/android/eclipse/
- 现在你应该可以在搜索列表中看见刚才新加入的站点了(默认已经选中了),点击Finish
- 在随后的Search Results对话框中,选中Android Plugin > Eclipse Integration > Android Development Tools,然后点击Next
- 阅读许可协议,然后选择Accept terms of the license agreement,点击Next
- 点击Finish
- ADT插件没有signed,在安装过程中会弹出确认窗口,你只需要点击 Install All就可以了
- 重启Eclipse
- 重启后,在Eclipse的Preferences中指定SDK的路径
a.选择Window > Preferences...打开Preference的面板。(Mac OS X:Eclipse > Preferences) b.在左侧的面板中选择Android c.在主面板中,点击Browse...定位到SDK的目录 d.点击Apply,然后点击OK
更新ADT插件
按照下面的步骤将你的ADT插件升级到最新版本:
- 选择Help > Software Updates > Find and Install...
- 选择Search for updates of the currently installed features,然后点击Finish
- 如果ADT插件有任何更新,选择并且安装
- 另一种更新的方法:
- 选择Help > Software Updates > Manage Configuration
- 在其中找到Android Development Tools <版本号>并选中
- 在Available Tasks下选择Scan for Updates
[编辑] 在Eclipse上开发Android应用程序
要开始在Eclipse上开发Android应用程序,首先需要创建一个Android工程并且设置好启动配置项。然后你就可以开始编写、运行和调试你的应用程序了。
本节接下来的内容默认你已经在Eclipse中安装了ADT插件。如果你尚未安装ADT,那么建议你先参照安装Eclipse插件(ADT)一节中的介绍。
[编辑] 创建Android工程
ADT插件提供了一个创建新工程的向导以使你能够快速的创建一个新的Eclipse工程或者为现有代码创建一个新工程。按照以下步骤来创建一个工程:
- 选择File > New > Project
- 选择Android > Android Project,然后点击Next
- 在Content中选择Project
- 选择Create new project in workspace以创建一个新的工程
键入工程的名字,你程序的名称,base package的名字,Activity class的名字来创建一个stub .java文件 - 选择Create project from existing source从现有代码创建一个工程。通过这种方式,你可以编译运行SDK里面sample中的应用程序。sample应用程序在SDK安装目录下的samples/中
找到包含有现有代码的路径并点击OK。如果路径中含有一个有效的Android的manifest file,ADT插件就会加载包名,程序名,activity名
- 选择Create new project in workspace以创建一个新的工程
- 点击Finish
ADT插件会根据你的工程的类型创建以下合适的文件夹和文件:
- src/文件夹包含stub .java activity file
- res/文件夹包含你的资源文件
- AndroidManifest.xml是你工程的manifest
[编辑] 创建启动配置
要想在Eclipse下运行并调试你的程序,你需要先创建启动配置。启动配置中指定了要启动的工程,要用的模拟器选项等等。
要给程序创建启动配置,按照如下步骤:
- 选择Run > Open Run Dialog... 或者 Run > Open Debug Dialog...
- 在左侧工程类型的列表中,右键点击Android Application并且选择New
- 给你的配置键入一个名字
- 在Android的Tab页上,找到用于开始的工程和Activity
- 在模拟器Tab页上,设置需要的屏幕和网络属性,和其他一些模拟器启动选项
- 在Common的Tab页上,你可以对一些附加的选项进行设置
- 点击Apply保存启动配置,或者,点击Run或者Debug
[编辑] 运行和调试程序
当你建立工程,并为你的程序设置好启动配置后,按照下面的步骤你就可以运行或者调试你的程序了。
在Eclipse的主菜单上选择Run > Run 或者 Run > Debug,来运行或者调试可用的启动配置
需要注意的是可用的启动配置默认的是最近一次在启动配置中选择的那一个。并不一定是对应着你在Eclipse打开的那个程序。
要设置或者更改启动配置,你可以通过运行配置管理器即点击Run > Open Run Dialog... 或者 Run > Open Debug Dialog...
运行或者调试应用程序会引发以下的动作
- 启动模拟器
- 编译工程,并将程序安装在模拟器上
- Run启动程序
- Debug启动程序进入“等待调试器”模式,然后打开调试视图并连接至Eclipse的Java调试器
[编辑] 利用其他的开发环境和工具开发Android应用程序
推荐您使用带有Android插件的Eclipse来开发Android应用程序,ADT插件提供了编辑、编译、调试功能并集成进了IDE中。然而,SDK中包含了可以让你用其他IDE开发的工具,包括intelliJ
[编辑] 创建Android工程
Android的SDK中包含了一个程序activityCreator,它可以为你的工程生成stub文件和build文件。你可以利用这个程序来创建新的工程或者从现有代码创建工程(比如SDK中的示例程序)。对于Linux和Mac,SDK提供了一个python的脚本activityCreator.py;对于Windows,相应的提供了activityCreator.bat这个批处理的脚本。不管是哪种平台,你都可以以同样的方式操作activityCreator。 按照下面的步骤来运行activityCreator并创建一个Android工程:
- 在命令行,进入SDK安装目录下面的tools/目录,为你的工程文件创建一个新的目录。如果你是从现有代码创建工程,那么转到你的程序所在的根目录
- 运行activityCreator.在命令行,你需要指明一个full-qualified类的名称作为参数。如果你是创建一个全新的项目,脚本创建的stub类的名称即使所要求的full-qualified的类的名称。如果你是从现有代码创建工程,需要指定包中的一个Activity class的名称。脚本的可选命令参数包含:
- --out <folder>,设定输出目录。默认的输入目录就是当前目录。如果要为你的工程文件创建一个新的目录,使用这个来指定
- --ide intellij,对新建的工程生成IntelliJ IDEA的工程文件
下面是一个例子:
~/android_linux_sdk/tools$ ./activityCreator.py --out myproject your.package.name.ActivityName package: your.package.name out_dir: myproject activity_name: ActivityName ~/android_linux_sdk/tools$
activityCreator脚本生成如下的文件和目录(不会覆盖已有的目录和文件)
- AndroidManifest.xml:应用程序的manifest文件,与指定的Activity class是同步的
- build.xml:用来编译和打包应用程序的Ant文件
*src/your/package/name/ActivityName.java:在你输入时指定的的Activity class
- your_activity.iml,your_activity.ipr,your_activity.iws:intelliJ工程文件
- res/:资源文件的目录
- src/:源代码目录
- bin/:编译脚本的输出目录
现在可以将你的目录移动到任何你想开发的地方,但是需要注意的是你只能通过tools目录下的adb程序来将文件发送到模拟器,因此,你需要保证你的解决方案和tools/目录之间是可以互相读取的
同时,尽量不要移动SDK开发包的位置,因为这将对build脚本产生影响(要使之能够重新运行你需要手动更新这些脚本来reflect the new SDK location)
[编辑] 编译Android程序
利用activityCreator生成的Ant build.xml文件来编译你的程序。
- 如果你尚未安装Ant,可以去Apache Ant的主页下载。安装Ant,并确认它在你的可执行路径上
- 在运行Ant前,你需要声明JAVA_HOME环境变量来指定JDK的安装路径
- 提示:在Windows上安装JDK的时候,默认安装在Program Files文件夹下。由于名字中有空格会导致ant无法启动。要解决这个问题,你可以这样来指定JAVA_HOME变量: JAVA_HOME=c:\Prora~1\Java\。
还有一种最简单的解决方法就是将JDK安装在一个目录中不含有空格的路径下,例如:c:\java\jdk1.6.0_02
- 提示:在Windows上安装JDK的时候,默认安装在Program Files文件夹下。由于名字中有空格会导致ant无法启动。要解决这个问题,你可以这样来指定JAVA_HOME变量: JAVA_HOME=c:\Prora~1\Java\。
- 如果你还没有做这些,请按照上述的说明来创建一个新的工程
- 现在你可以在build.xml文件所在的目录下启动ant来运行ant build file。每次你对源程序或者资源文件做出了改动的话,你需要重新运行ant,它会将程序的最新版本打包使之得以部署
[编辑] 运行Android程序
要运行已经编译好的程序,请按照下面的步骤,通过adb工具将.apk文件上载到模拟器下面的/data/app/路径中:
- 启动模拟器(从命令行运行: <你的SDK安装目录>/tools/emulator)
- 在模拟器中,切换到主屏幕(在你将程序重新安装到模拟器的过程中,最好先让程序停止运行;点击Home键从那个程序中切换出来)
- 在命令行输入: adb install myproject/bin/<appname>.apk将其上载至模拟器。例如,要安装示例程序中的Lunar Lander,则在命令行下转至<你的SDK安装目录>/sample/LunarLander目录下,并输入: ../../tools/adb install bin/LunarLander.apk
- 在模拟器中,打开可用的程序列表,选择你的程序并启动
提示:当你第一次安装一个Activity时,你可能需要重新启动模拟器。因为包管理器通常只是在模拟器启动的时候才完全检测manifests。
[编辑] 将调试器关联到应用程序
这一节介绍如何在屏幕上显示调试信息(如CPU利用率)以及如何在IDE中调试在模拟器上运行的程序
Eclipse的插件已经自动关联到了调试器,但是对于其他的IDE,你可以配置其监听调试端口来接收调试信息。
- 启动Dalvik Debug Monitor Server(DDMS) tool,这个工具在你的IDE和模拟器之间起到一个转发服务的作用
- 在模拟器上设置可选的调试配置项,例如在关联到调试器之前阻止应用程序启动为一个运行实例。要指出的是许多此类的调试选项都可以在没有DDMS的情况下使用,例如在模拟器上显示CPU使用率或者屏幕刷新率等
- 配置你的IDE关联到8700端口来调试。这部分内容详见如何设置Eclipse来调试Android程序
[编辑] 配置IDE关联到调试端口
DDMS将为它在模拟器上搜索到的每一个虚拟机分配一个指定的调试端口。你需要将IDE关联到这个指定的端口(在该虚拟机的Info Tab页列出),或者你可以使用默认的8700端口来连接到任何一个在已找到的虚拟机列表选中的程序。
你的IDE关联到正在模拟器上运行的程序,可以显示程序的线程并且允许你中止,检测其运行状态和设置断点。如果你在开发设置面板里选择了“等待调试器”,应用程序只有在Eclipse连接上的时候才会运行,因此你需要在连接上之前设定好断点。
对正在进行调试的应用程序进行了改动或者改动了“等待调试器”选项将使系统杀死选择的程序(如果该程序正在运行),你可以用这种方法来杀死一个状态异常的程序。
[编辑] 调试
Android有数量众多的工具用于支持调试程序:
- DDMS-DDMS是一个图形化的程序,支持端口转发(因此你可以在程序中设置断点),支持模拟器上的截屏,支持线程和堆栈信息和其他的一些特性。
- logcat-Dump一份系统消息的日志。这些消息包括模拟器抛出错误时的堆栈跟踪。要运行logcat,点击链接获取更详细的信息。
...
I/MemoryDealer( 763): MemoryDealer (this=0x54bda0): Creating 2621440 bytes heap at 0x438db000
I/Logger( 1858): getView() requesting item number 0
I/Logger( 1858): getView() requesting item number 1
I/Logger( 1858): getView() requesting item number 2
D/ActivityManager( 763): Stopping: HistoryRecord{409dbb20 com.google.android.home.AllApps}
...
- Android Log-一个记录日志的类,用来将消息写入模拟器上的日志文件中。如果你在DDMS上运行logcat的话你可以就实时查看消息。在你的代码中加入几个写日志方法的调用。
为了使用Log类,你只需要调用Log.v()(verbose),Log.d()(debug),Log.i()(information),Log.w()(warning) 或者 Log.e()(error),根据你想获得的日志信息来选择相应的方法
Log.i("MyActivity", "MyClass.getView() — Requesting item number " + position)
你可以用logcat来读取这些信息
- Traceview-Android可以保存一个日志用来记录被调用的方法以及该方法被调用的次数,通过Traceview你可以在一个图形化的界面中查看这个日志文件。点击链接获取更详细的信息。
- Eclipse插件-Eclipse的Android插件合并了一系列的调试工具(ADB,DDMS,logcat output和其他一些函数)。点击链接查看更多详情。
- Debug and Test Device Settings-Android提供了一些设置用来获取诸如CPU使用率和帧速率等有用的信息。具体请看下面的设备上调试和测试的设置
如果想知道为什么你程序无法在模拟器上显示或者为什么程序没有启动,请查看常见问题这一节
[编辑] 设备上调试和测试的设置
Android提供了众多的设置使你可以更容易的调试和测试程序。要进入开发设置页面,在模拟器中转到Dev Tools > Development Settings。在该设置页面有以下选项:
- Debug app:选择要调试的程序。你不需要设定其关联至调试器,但是设定这个值有两个效果:
- 在调试的时候,如果你在一个断点处暂停了过长的时间,这个设定会防止Android抛出一个错误
- 这个设定使你可以选择“等待调试器”选项,使程序只有在调试器关联上之后才启动
- Wait for Debugger:阻塞所选的程序的加载直到有调试器关联上,这样你就可以在onCreate()中设置断点,这对于调试一个Activity的启动进程是非常重要的。当你对该选项进行了更改,任何正在运行的程序的实例都会被终止。你只有在上面的选项中选择了一个调试程序才能够选中该选项。你一也可以在代码中添加waitForDebugger()来实现同样的功能。
- Immediately destroy activities:告诉系统一旦一个activity停止了就销毁该activity(例如当Android释放内存的时候)。这对于测试代码onFreeze(Bundle)/onCreate(android.os.Bundle)是非常有用的,否则会比较困难。如果你的程序没有保存状态,那么选择这个选项很可能会引发很多问题。
- Show screen updates:对于任何正在被重绘的screen sections都会在其上闪现一个粉红色的矩形。这对于发现不必要的screen绘制是很有必要的。
- Show CPU usage:在屏幕上方显示CPU信息,显示有多少CPU资源正在被使用。上方红色条显示总的CPU使用率,它下方绿色的条显示CPU用在compositing the screen上的时间。注意:在没有重启模拟器之前,一旦你开启了该功能就不能关闭。
- Show screen FPS:显示当前的帧率。这对于查看游戏达到的总的帧率是非常有用的。注意:在没有重启模拟器之前,一旦你开启了该功能就不能关闭。
- Show background:当没有activity screens可见时,显示一个背景模式。一般是不会出现的,仅仅在Debug的时候会出现。
设定的选项在模拟器重启之后仍然有效,如果要取消设定的选项,在取消设定以后还要重启模拟器,才能生效。
[编辑] 重要的调试小提示
快速的堆栈dump
要在模拟器上获得一个堆栈dump,你可以通过adb shell登入,用“ps”找到你想要的进程,然后“kill -3”,堆栈跟踪信息就会记录到日志文件中了。
在模拟器屏幕上显示有用信息
设备上可以显示诸如CPU利用率或者对重绘区域的边缘高亮显示等有用信息,在开发设置窗口可以打开或者关闭这些功能,详细信息参见[安装SDK#设备上调试和测试的设置|在模拟器上设置调试和测试配置]
从模拟器上获取系统状态信息(dumpstate)
你可以通过Dalvik Debug Monitor Service工具来获得dumpstate信息。参见adb章节的dumpsys and dumpstate
从模拟器上获取程序状态信息(dumpsys)
你可以通过Dalvik Debug Monitor Service工具来获得dumpsys信息。参见adb章节的dumpsys and dumpstate
获取无线连接信息
你可以通过Dalvik Debug Monitor Service工具来获得无线连接信息。在Device菜单,选择“Dump radio state”
日志记录跟踪数据
你可以在一个activity中通过调用android.os.Debug.startMethodTracing()来用日志来记录方法调用和其他跟踪数据。详细内容请参见Running the Traceview Debugging Program
日志记录Radio Data
默认情况下,radio信息是不会记录在系统中的(因为数据量巨大)。然而,你可以通过下面的命令来开启radio记录 adb shell logcat -b radio
运行adb
Andoid中自带了一个叫adb的工具,该工具功能强大,可以移动并同步文件到模拟器,转发端口。在模拟器上运行一个UNIX shell。详细内容参见Using adb
从模拟器上获取屏幕截图
Dalvik Debug Monitor Server (DDMS)可以从模拟器上获取屏幕截图
利用调试帮助类
Android为了开发者的方便提供了诸如util.Log和Debug等帮助类
[编辑] 编译安装Android应用程序
Android需要专门的编译工具来正确的编译资源文件和Android程序的其他部分。基于此,你需要为你的程序准备一个专门的编译环境。
Andorid的编译过程通常包括编译XML和其他资源文件、创建正确的输入格式。经过编译的Android程序是一个.apk文件,.apk文件是一个压缩文件,它其中包含了.dex文件、资源文件、raw data文件和其他文件。
Andoriod暂时还不支持用本地代码(C/C++)开发第三方程序。
强烈推荐[安装SDK#在Eclipse上开发Android应用程序 在Eclipse上开发Andoid应用程序],通过Eclipse+ADT插件可以支持编译、运行、调试Andorid程序。
如果你用其他IDE,参见[安装SDK#利用其他的开发环境和工具开发Android应用程序 利用其他的开发环境和工具开发Android应用程序]来编译和调试Android程序,但是他们不是集成在一起的。
[编辑] 移除Andorid程序
要移除你安装在模拟器上的程序,你需要通过run adb并删除相应的.apk文件。通过adb shell在模拟器上打开一个UNIX shell,进入目录data/app/,通过命令rm 你程序的名称.apk来移除文件
[编辑] Eclipse小提示
[编辑] 在Eclipse上执行arbitrary Java表达式
在Eclipse中,当程序运行到断点处暂停时,你可以执行arbitrary code。例如:在一个有一个String参数的函数“zip”,你可以获取包的信息和调用类的方法。你同样可以调用静态方法:例如输入android.os.Debug.startMethodTracing()可以开始dmTrace
打开一个代码执行窗口,在主菜单中选择[b]Window > Show View > Display[/b]打开显示窗口:一个简单的文本编辑器。输入你的表达式,高亮文本,点击图标“J”(或者Ctrl+Shift+D)来运行你的代码。The code runs in the context of the selected thread, which must be stopped at a breakpoint or single-step point. (If you suspend the thread manually, you have to single-step once; this doesn't work if the thread is in Object.wait().)
如果你此时在一个断点处暂停,你可以简单通过Ctrl+Shift+D来高亮并执行一段代码。
You can highlight a block of text within the same scope by pressing ALT +SHIFT + UP ARROW to select larger and larger enclosing blocks, or DOWN ARROW to select smaller blocks.
下面是一些在Eclipse中显示窗口中的输入和响应的例子:
| Input | Response |
|---|---|
| zip | (java.lang.String) /work/device/out/linux-x86-debug/android/app/android_sdk.zip |
| zip.endsWith(".zip") | (boolean) true |
| zip.endsWith(".jar") | (boolean) false |
You can also execute arbitrary code when not debugging by using a scrapbook page. Search the Eclipse documentation for "scrapbook".
[编辑] 手动运行DDMS
尽管调试推荐的方式是利用ADT插件,你仍然可以通过手动运行DDMS并配置Eclipse在8700端口调试。(注意:确定你已经启动了DDMS)
