Android 入门开发指南之三 -- 在其他平台下开发

 

使用其它的集成开发环境和工具开发 Android 应用程序
推荐使用开发 Android 应用程序的开发环境是 Eclipse+Android 插件,该插件 提供集成到 Eclipse 中的编辑,创建和调试功能。然而, SDK 包含能让你使用集成开发环境进行开发的工具,包括 intelliJ (所以你最好使用 Eclipse+ADT 进行开发)。
创建一个 Android 工程
Android SDK 包括工具 activityCreator 这个工具能够为你的工程生成一系列的原始文件和一个工程文件。你也可以使用该程序从已存在的代码创建一个 Android 工程,例如 SDK 中包含的例子程序。对 Linux 平台和 Mac 平台来说, SDK 提供 activityCreator.py 一个 Python 脚本语言,对 Windows 平台而言,则是 activityCreator.bat 一个批处理脚本。由于具有平台无关性,你可以用相同的方法使用 activityCreator 工具。
要运行 activityCreator 工具创建一个 Android 工程,需要依照以下步骤:
1.      在命令行,改变 SDK tools/ 路径,创建一个新的项目文件路径。如果你从已存在的代码中创建工程,设置你的根目录到你的应用程序目录下。
2.      运行 activityCreator. 在命令行,你必须指定一个具备条件的类名作为参数。如果你创建一个新的工程,这个类代表脚本创建的原始类的名字。如果你从现有代码创建一个工程,你必须指定包中实体类的名字。这个脚本的命令选项包括:
o                --out < 路径 > 设置输出的路径。默认情况下,输出路径是当前路径。如果你为你的工程文件创建一个新的文件路径,使用这个命令选项设定它
o                --ide intellij , which generates IntelliJ IDEA project files in the newly created project
--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 应用程序注册文件, 与工程的实体类同步
·          build.xml 一个阿帕奇蚂蚁文件,你可以用来创建 / 打包应用程序
·          src/your/package/name/ActivityName.java  你指定输入的实体类
·          your_activity .iml, your_activity.ipr, your_activity.iws    [only with the -ide intelliJ flag ] intelliJ 工程文件 .
·          res/    存放资源的路径 .
·          src/     源代码路径 .
·          bin/    创建脚本输出路径
你现在可以将你的文件夹移动到任何你想要存放的位置,不过需要注意的是,你必须在 tools 目录下使用 adb 程序,从而将文件发送至仿真器。因此,你必须经常在你的工作路径和 tools 两个目录下来回切换。
同样,你应该避免将文件夹移动到 SDK 目录下,这样会中止创建脚本工作(在你重新开始工作之前,脚本需要手工更新至新的 SDK 路径)。
创建一个 Android 应用程序
使用 activityCreator 创建的蚂蚁文件来生成你的应用程序。
1.      如果还没有阿帕奇蚂蚁,那么你可以从 Apache蚂蚁主页 上获得并且安装,并且确保它存在于你的可执行路径中。
2.      在使用蚂蚁之前,你需要定义 JAVA_HOME  环境变量为你安装 Java JDK 的路径。
注意:当你安装 JDK windows 系统时,默认的安装路径是 ”Program Files” 。这个路径会导致蚂蚁运行失败,因为空格的原因。为了修复这个问题,你可以这样指定 JAVA_HOME 变量: set JAVA_HOME=c:/Prora~1/Java/ . 更简单的解决办法是安装 JDK 到不包含空格的路径下,例如: c:/java/jdk1.6.0_02.
3.      如果你还没有做好这些准备工作,请按照前面创建一个新的工程的介绍来进行准备。
4.      现在你可以在 build.xml 文件所在目录下简单地输入 ant 命令运行蚂蚁创建文件 . 每次需改文件或者资源之后,你都需要重新运行蚂蚁,蚂蚁会帮你打包最终版本的程序并且进行配置。
运行一个 Android 程序
运行一个编译好的程序,你可以使用 adb 工具上载 .apk 文件到仿真器的 /data/app 目录下,步骤如下:
1.      启动仿真器(从命令行运行 $SDK_HOME/tools/emulator
2.      在仿真器上,滚动桌面导航条(装入应用程序时,最好能保证相同的程序没有运行,点击 Home 键从该应用程序返回到桌面导航条)
3.      运行 adb install myproject/bin/<appname>.apk 来装入可执行文件 .So, 例如,要装入 Lunar Lander 例子程序,在命令行切换路径至 $SDK_ROOT/sample/LunarLander, 输入 ../../tools/adb install bin/LunarLander.apk.
4.      在仿真器中,打开可用应用程序列表,向下滑动,选中并且启动你的应用程序。
注意:当你第一次安装一个实例时,你可能必须在仿真器显示应用程序启动器或者其它应用程序条用它之前重新启动。这是因为包管理器只有在仿真器启动的时候才会扫描注册文件。
连接调试器到应用程序
这一节介绍如何在屏幕上显示调试信息,并且如何让你的集成开发环境在仿真器上调试运行应用程序。
设置一个自动使用 Eclipse 插件的调试器,你可以配置其它 IDE 在某一个端口监听并且接受调试信息。
1.      启动 Dalvik 调试监视服务器( DDMS )工具, 这个工具启动连接你的集成开发环境和仿真器的作用。
2.      在你的仿真器上设置可选的调试信息配置 例如如果没有连接调试器则阻止应用程序启动。注意许多调试选项可以在没有 DDMS 的情况下使用,比如显示仿真器上的 cpu 使用率或者屏幕刷新率。
3.      配置你的集成开发环境到 8700 端口来进行调试, 在如何设置 Eclipse 调试你的工程部分你能看到更多的信息。
设置你的 IDE 连接到调试端口
DDMS 将分配一个特定的调试端口到仿真器上找到的每一个虚拟机,你可以连接你的 IDE 到该端口(在虚拟机的信息选项页),或者你可以使用默认的 8700 端口连接到在发现的虚拟机列表中选中的应用程序。
你的 IDE 应当可以连接你的仿真器上运行的应用程序,显示线程,允许你挂起它们,检查状态和设置断点。如果你在开发设定面板中选择 等待调试器 ,应用程序将在 Eclipse 连接时运行,因此,你需要在连接之前设置你需要你的断点。
改变调试中的应用程序或者 等待调试器 选项都会导致系统杀掉选中的应用程序,如果应用程序正处于运行状态。你可以利用这一点来杀掉异常状态的应用程序,只需要到设置选中该 等待调试器 选择框即可。
调试
Android 有一系列丰富的工具来帮助你调试你的程序 :
·          DDMS – A 图形化的程序,支持端口发送(因此你可以在你的 IDE 代码中设置端点),获取仿真器屏幕图像,线程和栈信息,和许多其它的特性。你也可以运行 logcat 程序来获取你的日志信息。参见相关主题获取更多的信息。
·          Logcat – 导出系统消息日志工具 . 这些消息包括一个仿真器丢出错误时的栈信息追踪以及消息日志,运行 logcat, 参见 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 日志 一个记录消息到仿真器日志文件的日志类。如果你 DDMS (后面会介绍)上运行 logcat ,你可以实时读取这些消息。 调价一些日志方法调用到你的代码。使用 Log , 你可以调用 Log.v()( 详细 ) Log.d() (调试), Log.i() ( 信息 ) Log.w()( 警告 ) 或者 Log.e(error), 根据你希望设定的日志消息重要性类型来获取日志。 Log.i("MyActivity", "MyClass.getView() — 获取条目数 " + 位置 )
你可以使用 logcat 来读取这些消息。
 
·          Traceview Android 能保存方法调用以及次数日志到一个日志文件,你可以通过一个叫做 Traceview 的图形化阅读器来浏览这些日志,想了解更多信息,你可以参考相关主题
·          Eclipse plugin - 插件集成了一系列的工具( ADB DDMS logcat 输出和其它功能),参考相关主题连接获取更多信息。
·          调试和测试设置 - Android 公开了一些显示有用信息比如 cpu 使用情况和内存使用率等,参考下面的 : 仿真器的调试和测试设置
同样,参考文档的 解决问题 部分可以找出为什么你的应用程序没有显示到仿真器上,或者没有启动。
设备上的调试和测试设置
Android 提供一些列的设置,可以让你更简单的测试和调试你的应用程序。通过选择 Dev Tools Development Settings 进入仿真器的开发设置页面。打开的页面包含下述重要选项(其它未列出):
·          调试应用程序 选择将要调试的应用程序,你不需要选择这个设置来连接调试器,但是选择这个有两个效果:
o                如果你调试德时候在一个端点停留时间过长,它能阻止 Android 抛出一个错误
o                它能让你通过选择等待调试器选项来实现(在没有连接到调试器时)暂停程序启动直到连接到调试器(后面有详细描述)
·          等待调试器 阻塞正在启动的选中应用程序直到连接上调试器。用这个办法你可以设置一个断点在 onCreate() 函数中,这对于调试一个实体的启动进程是非常重要的。当你改变这个选项,选中应用程序的任何正在运行的实例将会被杀掉。为了检查这个选项,你必须选择一个设置前上一个选项的正在调试的应用程序。你可以添加 waitForDebugger() 到你的代码来实现相同的功能。
·          立即销毁实例( Activities 通知系统在结束前尽快去销毁实例(仿佛 Android 必须回收内存) , 这对于测试 onFreeze(Bundle) / onCreate(android.os.Bundle) 代码路径,这种情况下难以强制执行。( which would otherwise be difficult to force )。设置这个选项将会在你的应用程序中出现一系列的错误,因为没有保存状态。
·          显示屏幕刷新   在屏幕重画的区域瞬间画一个粉红的矩形,这对于查找不必要的屏幕刷新是非常有用的。
·          显示 CPU 使用率 在屏幕顶端显示 CPU 使用率,表示 CPU 使用百分比,顶端的红条表示全部使用,底下的绿条显示 CPU 合成屏幕图像的时间。注意: 一旦你开启这个设置之后,不管你是够重启仿真器,都不能关闭它。
·          显示屏幕 FPS(frame per second) 显示当前的帧率,通常在游戏中测试能够达到的帧率。注意:一旦你开启知道,你就不能关闭这个设置,不过你是否重新启动仿真器。
·          显示背景   当没有活动的窗口显示时,系统会显示背景图案,一般情况下不会发生这种情况,但是调试过程中有可能会发生。
这些设置在仿真器重启之后也会继续被保存。
常用的调试技巧
快速栈(信息)导出
从仿真器获取栈导出,你可以使用 adb shell 来记录日志,使用 ”ps” 命令来查找你希望的进程,通过 ”kill -3” 命令将其杀掉 . 栈追踪将在日志文件中显示这些记录。
在仿真器屏幕上显示需要信息
这个设备可以显示有用的信息,如 cpu 使用率或者在刷新区高亮显示 . 打开或者关闭这些开发设置的详细细节可以参考 在仿真器上设置调试和测试配置 部分
从仿真器获取系统信息( dumpstate
你可以从 DDMS 工具访问 dumpstate 信息,参考 adb 主题页的 dumpsys dumpstate 部分
从仿真器获取应用程序信息( dumpsys
你可以从 DDMS 工具反问 dympsys 信息 . 参考 adb 主题页的 dumpsys dumpstate 部分
获取无线连接信息
你可以从 DDMS 工具获取无线连接信息 . Device 菜单选择 ”Dump radio state”.
记录跟踪数据日志
你可以通过调用 Android.os.Desbu.StartMethodTracing() 方法来记录函数调用和其它跟踪数据,想了解更多细节,请参考 运行 Traceview 调试程序 部分。
记录无线数据
默认情况下,无线信息并没有 被记录在系统内(因为数据量比较大) . 然而,可以通过下面的命令来开启无线日志。
adb shell
logcat -b radio
运行 adb .
Android 集成一个本地工具 adb ,它提供不同的功能,包括移动和同步文件到仿真器,转发端口和在仿真起上运行一个 UNIX 外壳程序( shell ),想了解更多细节,请参考使用 adb 部分。
从仿真器截取屏幕
Dalvik 调试监视服务器( DDMS )可以捕获仿真器屏幕快照。
使用帮助类调试
Android 提供帮助类如 util.Log Debgu 类来为你提供方便。
创建和安装一个 Android 应用程序
Android 需要定制的创建工具,这些工具能够用来适当的创建 Android 应用的资源文件和其它部分。应为这些原因,你必须为你的应用设置专门的创建环境。
一般的 Android 编译步骤包括编译 XML 文件和其它的资源文件,创建适当的输出文件格式。一个编译通过的 Android 应用事一个 .apk 文件,这个压缩文件包含 .dex 文件,资源文件,原始数据文件和其它文件。你可以通过新创建,或者从已经存在的代码创建一个适当的结构化的 Android 工程 .Android 现在并不支持使用 C/C++ 开发第三方应用程序。
推荐的开发 Android 应用程序的方法是使用 Eclipse +ADT, 这套工具提供创建,运行和调试 Android 应用程序。
如果你有令外的 IDE,Android 提供其它 IDE 下的工具来创建和调试 Android 应用程序,不过这些工具还不完整 .
删除一个 Android 应用程序
删除一个安装在仿真器上的应用程序,你需要运行 adb ,同时删除安装应用程序时发送到仿真器上的 .apk 文件 . 使用 adb shell 载入一个 shell 到设备上,见连接主题的描述,然后使用 rm your_app.apk 命令删除这个文件
Eclipse 技巧
 
Executing arbitrary Java expressions in Eclipse
Eclipse 中执行任意的 Java 表达式
你可以在 Eclipse 调试暂停时执行任意的代码。例如:在一个带有字符串 ”Zip” 的函数中,你可以获取包信息并且调用类方法。你也可以调用任意的静态方法:例如输入 android.os.Debug.startMethodTracing() 将启动 dmTrace 打开代码执行窗口,从主菜单中选择 Window >Show View>Display 来打开显示窗口,一个简单的文本编辑器。输入你的表达式,高亮显示文本,点击 ’J’ 图标(或者 CTRL+SHIFT+D )来运行你输入的代码。这些代码运行在你选定的线程上下文中,该线程必须停在断点处或者出于单步调试点(如果你挂起这个线程,你必须单步执行一次,如果线程处在 Object_wait() 函数中,代码将不能执行),
 
如果你正暂停在断点处,你可以使用 CTRL+SHILF+D 组合键简单高亮显示并且执行一段代码,你也可以使用一组组合键高亮显示一块文本,按下 ALT+SHIFT+UP 箭头增加选择临近的块文本,或者 ALT+SHIFT+DOWN 箭头缩小选中块。
这里是几个在 Eclipse 中使用显示窗口输入表达式和输出响应的例子:

输入
响应
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
你可以在没有调试时使用剪贴簿页来执行任意的代码,在 Eclipse 文档中搜索 剪贴簿
手工运行 DDMS
尽管推荐使用 ADT 插件来调试,你也可以使用 DDMS 和配置 Eclipse 8700 端口来调试。(注意:确认你启动过一次 DDMS
 
Thomaswan
2007/11/19

猜你喜欢

转载自blog.csdn.net/wellshine/article/details/1892786
今日推荐