基于命令行模式进行开发ANDROID应用

至此,SDK各组件安装完毕。执行tools/android,在"Installed Packages"下,你就会看到上述已经安装的组件包了。(笔者最后又发现了一个可以下载Android SDK的地方:http://dl.google.com/android[/android-sdk_r08-linux_86.tgz],在这里你下载到的SDK包内platforms和add-ons目录都已经建立完毕了,SDK tools在tools目录下,其余组件的安装方法和上面一致。)

  为了方便后续使用,我们可将SDK目录下的platform-tools和tools两个路径添加到PATH环境变量中。接下来,我们就可以创建一个虚拟设备了。Android虚拟设备其实是一组配置,tools下的emulator使用这些配置启动一个特定版本的Android模拟程序,用来部署、运行和测试你开发的Android应用。

  我们可以通过"android list targets"命令来查看当前系统中可以创建哪些平台的虚拟设备,在我的系统下,这条命令的执行结果如下:

  Available Android targets:
  id:
1 or " android-8 "
  Name: Android
2.2
  Type: Platform
  API level:
8
  Revision:
2
  Skins: WVGA854, QVGA, WVGA800 (
default ), WQVGA400, WQVGA432, HVGA
  id:
2 or " android-10 "
  Name: Android
2.3 . 3
  Type: Platform
  API level:
10
  Revision:
1
  Skins: WVGA854, QVGA, WVGA800 (
default ), WQVGA400, WQVGA432, HVGA

  我们有两个Platform可选,这里我们创建一个Android 2.3.3的虚拟设备。创建的命令如下:

  $ > android create avd - n helloandroid - t 2
  Android
2.3 . 3 is a basic Android platform.
  Do you wish to create a custom hardware profile [no]
  Created AVD
' helloandroid ' based on Android 2.3 . 3 ,
  with the following hardware config:
  hw.lcd.density
= 240
  vm.heapSize
= 24
  hw.ramSize
= 256

  其中-n 用于指定avd的名字,-t则用于指定platform,也就是target,之前我们已经列出系统中的Targets,我们只需选择一个,并使用target的id即可。

  创建后,我们可以通过android list avd来查看系统中都创建了哪些avd:

  $ > android list avd
  Available Android Virtual Devices:
  Name: helloandroid
  Path:
/ media / winD / tonybai / android - sdk - linux_86 / .android / avd / helloandroid.avd
  Target: Android
2.3 . 3 (API level 10 )
  Skin: WVGA800

  有了avd,我们就可以启动emulator了。执行emulator -avd helloandroid,我们得到了如下错误信息:

  “emulator: ERROR: the user data image is used by another emulator. aborting”

  这条错误信息的字面意思是有另外一个emulator使用了这个avd,但是我找了半天,发现我并未启动任务其他emulator,系统进程列表中也没有其他emulator的信息。又到网上找了一些资料,都说是因emulator异常退出,导致没有解锁avd配置目录下的.lock文件导致的。但我到avd配置目录下,根本没有找到什么.lock文件。

我又通过调试模式执行了一遍:emulator -avd helloandroid -verbose -debug-all,这回我得到的信息如下:

  ... 这里省略了几百行日志....

  emulator: found system.img in search dir: / media / winD / tonybai / android - sdk - linux_86 / platforms / android - 2.3 .3_r01 - linux / images /
  emulator: found userdata
- qemu.img in content directory
  emulator: locking user data image at
/ media / winD / tonybai / android - sdk - linux_86 / .android / avd / helloandroid.avd / userdata - qemu.img
  emulator: ERROR: the user data image is used by another emulator. aborting

  从上面的错误日志来看,似乎emulator在对userdata-qemu.img加锁时出现了问题。这个问题古怪了些。我的SDK部署在FAT32分区,难道是跨分区文件锁有问题。无奈下把SDK搬移到我的HOME路径下,并修改PATH环境变量。重新启动emulator,这回emulator启动成功了。不过第一次启动emulator可真是够慢的,大约有5、6分钟之多,才看到Android的界面。不过还有一个问题,那就是emulator启动的模拟器画面太大,出了屏幕边界(我的本子是12寸屏幕的)。我们来修改一下avd的配置,调整屏幕属性:

  在android-sdk-linux_86/.android/avd/helloandroid.avd目录下,我们打开config.ini,将下面三项配置:

  hw.lcd.density=240
  skin.name=WVGA800
  skin.path=platforms/android-2.3.3_r01-linux/skins/WVGA800

  修改为:

  hw.lcd.density=160
  skin.name=HVGA
  skin.path=platforms/android-2.3.3_r01-linux/skins/HVGA

  重新启动emulator,这回整个模拟器的画面都在屏幕以内了。

  万事俱备,只欠东风!下面我们就可以开始创建我们第一个HelloAndroid工程了。在~/proj/android下建立helloandroid目录,进入helloandroid目录,执行下面命令:

  $ > android create project -- name helloandroid -- activity HelloAndroid -- path . / -- package com.examples.helloandroid -- target 2
  Created directory
/ home / tonybai / proj / android / helloandroid / src / com / examples / helloandroid
  Added file .
/ src / com / examples / helloandroid / HelloAndroid.java
  Created directory
/ home / tonybai / proj / android / helloandroid / res
  Created directory
/ home / tonybai / proj / android / helloandroid / bin
  Created directory
/ home / tonybai / proj / android / helloandroid / libs
  Created directory
/ home / tonybai / proj / android / helloandroid / res / values
  Added file .
/ res / values / strings.xml
  Created directory
/ home / tonybai / proj / android / helloandroid / res / layout
  Added file .
/ res / layout / main.xml
  Created directory
/ home / tonybai / proj / android / helloandroid / res / drawable - hdpi
  Created directory
/ home / tonybai / proj / android / helloandroid / res / drawable - mdpi
  Created directory
/ home / tonybai / proj / android / helloandroid / res / drawable - ldpi
  Added file .
/ AndroidManifest.xml
  Added file .
/ build.xml
  Added file .
/ proguard.cfg

  Build该工程: ant release(注意对于2.3的SDK,ant要使用1.8以上版本)。一切很顺利,Build成功后,在bin下面出现了"helloandroid-unsigned.apk"文件。

  那么如何将apk文件部署到模拟器中运行呢?如果系统内仅有一个device在运行(可通过adb devices命令查看),那么我们可以直接执行ant install,这样我们的apk就会自动被部署到emulator中了(这期间使用的是调试版的数字签名)。

  部署后,你就会在emulator的界面上看到一个绿机器人图标且名字为“HelloAndroid”的程序了。点击其执行,我们得到一行文字:Hello World, HelloAndroid。这个文字是工程被创建时默认自带的,你当然也可以修改它了。

  另外如果要卸载这个应用也很简单,执行ant uninstall就是了。

  如果系统有多个AVD在运行,那么我们同样可以通过adb命令来选择一个device安装我们的应用,如果一个device的名字是emulator-5554(通过adb devices查看),那么我们可以先执行ant debug,生成bin/helloandroid-debug.apk,然后通过"adb -s emulator-5554 install bin/helloandroid-debug.apk"将应用安装到emulator-5554上去。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值