下午搭建好Android开发环境,自然就要开始Hello World之旅!
不过这次的示例程序,因为创建AVD的问题,让我走了很多弯路,多花费了两三小时。因此,我会在记录下来,以加深印象,可为自己及他人以后少走弯路。
在上篇《Andriod开发环境搭建》中,已经搭建好开发环境并创建了一个Android 2.2的模拟器。下面就直接开始创建工程了。
1,新建Android项目
打开Eclipse,点击菜单 New -- Other...,选择Android -- Android Project,如下图:
点击“Next”按钮,弹出下图提示框,输入相关的内容:
各参数说明:
Project name :工程文件夹的名称,这里输入:HelloWorld; Build target :用于编译工程的sdk版本,这里选择:Android 2.2; Application name :显示在程序上的标题,这里输入:Hello,World; Package name :Java包的名称,这里输入:study.android.HelloWorld; Create activity :该工程的activity,可以将其理解为工程的具体界面管理类,这里输入:HelloWorld; Min sdk version :该工程支持的sdk最低版本,这里输入:8。 输入完成后,点击“Finish”,创建工程完成!
2,编写代码
目录结构,此处略。
代码非常简单,打开src\study.android.HelloWorld\HelloWorld.java
修改为:
package study.android.HelloWorld;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloWorld extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello, World!");
setContentView(tv);
}
}
注意红色部分的代码,其他代码都是默认生成了。
其他文件,也不用做任何修改!
3,运行测试
创建工程,编写代码,都是很顺利,也很快。运行测试,让我费了不少心思!
右键项目HelloWorld -- Run As -- 1 Android Application,即会打开模拟器。待模拟器启动成功后,会显示在锁定界面,点击模拟器右边的“MENU”按钮,即会运行测试的程序,即HelloWorld。
(1)接下来,问题来了,没有出来梦想中的HelloWorld,窗体竟是一片漆黑!如下图:
因为完全没有经验,根本不知道问题在哪里。
检查了代码,没有什么发现问题。
查看Eclipse的Console,出现如下的结果:
从这里看,有提示“Success”,感觉应该成功了。但后面的“Killed”,又感觉像是结束了进程。就是感觉可能有问题,但却不知道问题在哪里!
(2)上网百度一下,看到几篇文章的步骤,跟我的完全一样。包括官方的文档:Android Developmers 上的"Hello,World" ,做法也是跟我的一样,倒腾了半小时,此时确定不了问题的原因。
(3)会不会是工程创建得有什么问题?于是重新创建一个,再次输入工程名等参数值,以及再代编写代码,启动模拟器测试,又倒腾了半小时,结果依然是让人失望。
找不到问题,只好暂时放一放,先出去买点东西,透透气,哈哈!
(4)会不会是版本的问题呢?于是,再重新创建一个工程,Target选择:Android 1.6,Min SDK Version 输入:4。
接着,再次输入代码。
接下来,配置模拟器:点击Eclipse的菜单Window -- Android SDK and AVD Manager 。在Android SDK and AVD Manager 窗口中,选择左边的“Virtual Device”,点击右边的“New...”按钮,添加一个Android 1.6的模拟器,如下图:
输入Name:android16,选择Target为:Android 1.6 - API Level 4,其他默认,点击“Create AVD”按钮,这样Android16就显示在列表当中,关闭Android SDK and AVD Manager 窗口。
右键项目,选择Run As -- Android Application,待模拟器启动后,点击模拟器的“Menu”按钮,这次,成功地看到了“HelloWorld”。哈哈,看到了黎明的希望!
到底是原因,造成了Android 2.2不能正常显示,比较了成功与失败时Eclipse的Console信息,内容如下:
[2010-12-25 22:49:40 - HelloWorld] Android Launch!
[2010-12-25 22:49:40 - HelloWorld] adb is running normally.
[2010-12-25 22:49:40 - HelloWorld] Performing study.HelloWorld.HellWorldActivity activity launch
[2010-12-25 22:49:40 - HelloWorld] Automatic Target Mode: launching new emulator with compatible AVD 'android16'
[2010-12-25 22:49:40 - HelloWorld] Launching a new emulator with Virtual Device 'android16'
[2010-12-25 22:49:41 - HelloWorld] New emulator found: emulator-5554
[2010-12-25 22:49:41 - HelloWorld] Waiting for HOME ('android.process.acore') to be launched...
[2010-12-25 22:51:20 - HelloWorld] HOME is up on device 'emulator-5554'
[2010-12-25 22:51:20 - HelloWorld] Uploading HelloWorld.apk onto device 'emulator-5554'
[2010-12-25 22:51:20 - HelloWorld] Installing HelloWorld.apk...
[2010-12-25 22:51:35 - HelloWorld] Success!
[2010-12-25 22:51:35 - HelloWorld] Starting activity study.HelloWorld.HellWorldActivity on device emulator-5554
[2010-12-25 22:51:46 - HelloWorld] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=study.HelloWorld/.HellWorldActivity }
[2010-12-25 22:55:40 - Emulator] emulator: warning: opening audio input failed
[2010-12-25 22:55:40 - Emulator]
[2010-12-25 22:57:24 - HelloAndroid] ------------------------------
[2010-12-25 22:57:24 - HelloAndroid] Android Launch!
[2010-12-25 22:57:24 - HelloAndroid] adb is running normally.
[2010-12-25 22:57:24 - HelloAndroid] Performing study.HelloAndroid.HelloAndroidActivity activity launch
[2010-12-25 22:57:24 - HelloAndroid] Automatic Target Mode: launching new emulator with compatible AVD 'android2_2'
[2010-12-25 22:57:24 - HelloAndroid] Launching a new emulator with Virtual Device 'android2_2'
[2010-12-25 22:57:25 - HelloAndroid] New emulator found: emulator-5554
[2010-12-25 22:57:25 - HelloAndroid] Waiting for HOME ('android.process.acore') to be launched...
[2010-12-25 22:57:59 - HelloAndroid] HOME is up on device 'emulator-5554'
[2010-12-25 22:57:59 - HelloAndroid] Uploading HelloAndroid.apk onto device 'emulator-5554'
[2010-12-25 22:58:00 - HelloAndroid] Installing HelloAndroid.apk...
[2010-12-25 22:58:43 - HelloAndroid] Success!
[2010-12-25 22:58:43 - HelloAndroid] Starting activity study.HelloAndroid.HelloAndroidActivity on device emulator-5554
[2010-12-25 22:58:44 - HelloAndroid] ActivityManager: [1] Killed am start -n stud...
注意红色部分,导致了两次完全不同的结果。
为了进一步确定是否因为版本的原因。我进一步创建了Android 2.1与Android 2.3再次测试。当然,这里没有创建新的工程,而是通道修改配置来完成。a. 修改default.properties文件,设置target=android-7(android-7就是android 2.1,android-9 就是android 2.3) b. 修改AndroidManifest.xml文件, <uses-sdk android:minSdkVersion="7" />,如果default.properties文件中的target=android-9,这里也相应要改成android:minSdkVersion="9"。同时,我们在Android SDK and AVD Manager 窗口,添加Android 2.1和Android 2.3的模拟器。如下图:
倒腾了半小,测试Android 2.1和Android 2.3都能够正常显示。显示结果如下图:
这样看来,还不是版本的问题,而是模拟器的问题。通过比较,发现Android 2.2的模拟器,有一处不其他版本的模拟器不同,多配置了一个SD Card 的Size 为 :8000(MiB),如 下图:
删除现有的模拟器,重新创建一个Android 2.2的模拟器,不再配置SD Card 的Size参数。再次运行,模拟器启动后,就可以看到梦想中的“Hello,World!”了。
至此,问题的原因,就已经清楚了。至于为什么配置SD Card后,会出现这个问题,以后再找继续解决了!
一个小小的问题,带来了不少的问题了,也花费了几个小时,去解决问题,总结问题!
不过这次的示例程序,因为创建AVD的问题,让我走了很多弯路,多花费了两三小时。因此,我会在记录下来,以加深印象,可为自己及他人以后少走弯路。
在上篇《Andriod开发环境搭建》中,已经搭建好开发环境并创建了一个Android 2.2的模拟器。下面就直接开始创建工程了。
1,新建Android项目
打开Eclipse,点击菜单 New -- Other...,选择Android -- Android Project,如下图:
点击“Next”按钮,弹出下图提示框,输入相关的内容:
各参数说明:
Project name :工程文件夹的名称,这里输入:HelloWorld; Build target :用于编译工程的sdk版本,这里选择:Android 2.2; Application name :显示在程序上的标题,这里输入:Hello,World; Package name :Java包的名称,这里输入:study.android.HelloWorld; Create activity :该工程的activity,可以将其理解为工程的具体界面管理类,这里输入:HelloWorld; Min sdk version :该工程支持的sdk最低版本,这里输入:8。 输入完成后,点击“Finish”,创建工程完成!
2,编写代码
目录结构,此处略。
代码非常简单,打开src\study.android.HelloWorld\HelloWorld.java
修改为:
package study.android.HelloWorld;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloWorld extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello, World!");
setContentView(tv);
}
}
注意红色部分的代码,其他代码都是默认生成了。
其他文件,也不用做任何修改!
3,运行测试
创建工程,编写代码,都是很顺利,也很快。运行测试,让我费了不少心思!
右键项目HelloWorld -- Run As -- 1 Android Application,即会打开模拟器。待模拟器启动成功后,会显示在锁定界面,点击模拟器右边的“MENU”按钮,即会运行测试的程序,即HelloWorld。
(1)接下来,问题来了,没有出来梦想中的HelloWorld,窗体竟是一片漆黑!如下图:
因为完全没有经验,根本不知道问题在哪里。
检查了代码,没有什么发现问题。
查看Eclipse的Console,出现如下的结果:
从这里看,有提示“Success”,感觉应该成功了。但后面的“Killed”,又感觉像是结束了进程。就是感觉可能有问题,但却不知道问题在哪里!
(2)上网百度一下,看到几篇文章的步骤,跟我的完全一样。包括官方的文档:Android Developmers 上的"Hello,World" ,做法也是跟我的一样,倒腾了半小时,此时确定不了问题的原因。
(3)会不会是工程创建得有什么问题?于是重新创建一个,再次输入工程名等参数值,以及再代编写代码,启动模拟器测试,又倒腾了半小时,结果依然是让人失望。
找不到问题,只好暂时放一放,先出去买点东西,透透气,哈哈!
(4)会不会是版本的问题呢?于是,再重新创建一个工程,Target选择:Android 1.6,Min SDK Version 输入:4。
接着,再次输入代码。
接下来,配置模拟器:点击Eclipse的菜单Window -- Android SDK and AVD Manager 。在Android SDK and AVD Manager 窗口中,选择左边的“Virtual Device”,点击右边的“New...”按钮,添加一个Android 1.6的模拟器,如下图:
输入Name:android16,选择Target为:Android 1.6 - API Level 4,其他默认,点击“Create AVD”按钮,这样Android16就显示在列表当中,关闭Android SDK and AVD Manager 窗口。
右键项目,选择Run As -- Android Application,待模拟器启动后,点击模拟器的“Menu”按钮,这次,成功地看到了“HelloWorld”。哈哈,看到了黎明的希望!
到底是原因,造成了Android 2.2不能正常显示,比较了成功与失败时Eclipse的Console信息,内容如下:
[2010-12-25 22:49:40 - HelloWorld] Android Launch!
[2010-12-25 22:49:40 - HelloWorld] adb is running normally.
[2010-12-25 22:49:40 - HelloWorld] Performing study.HelloWorld.HellWorldActivity activity launch
[2010-12-25 22:49:40 - HelloWorld] Automatic Target Mode: launching new emulator with compatible AVD 'android16'
[2010-12-25 22:49:40 - HelloWorld] Launching a new emulator with Virtual Device 'android16'
[2010-12-25 22:49:41 - HelloWorld] New emulator found: emulator-5554
[2010-12-25 22:49:41 - HelloWorld] Waiting for HOME ('android.process.acore') to be launched...
[2010-12-25 22:51:20 - HelloWorld] HOME is up on device 'emulator-5554'
[2010-12-25 22:51:20 - HelloWorld] Uploading HelloWorld.apk onto device 'emulator-5554'
[2010-12-25 22:51:20 - HelloWorld] Installing HelloWorld.apk...
[2010-12-25 22:51:35 - HelloWorld] Success!
[2010-12-25 22:51:35 - HelloWorld] Starting activity study.HelloWorld.HellWorldActivity on device emulator-5554
[2010-12-25 22:51:46 - HelloWorld] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=study.HelloWorld/.HellWorldActivity }
[2010-12-25 22:55:40 - Emulator] emulator: warning: opening audio input failed
[2010-12-25 22:55:40 - Emulator]
[2010-12-25 22:57:24 - HelloAndroid] ------------------------------
[2010-12-25 22:57:24 - HelloAndroid] Android Launch!
[2010-12-25 22:57:24 - HelloAndroid] adb is running normally.
[2010-12-25 22:57:24 - HelloAndroid] Performing study.HelloAndroid.HelloAndroidActivity activity launch
[2010-12-25 22:57:24 - HelloAndroid] Automatic Target Mode: launching new emulator with compatible AVD 'android2_2'
[2010-12-25 22:57:24 - HelloAndroid] Launching a new emulator with Virtual Device 'android2_2'
[2010-12-25 22:57:25 - HelloAndroid] New emulator found: emulator-5554
[2010-12-25 22:57:25 - HelloAndroid] Waiting for HOME ('android.process.acore') to be launched...
[2010-12-25 22:57:59 - HelloAndroid] HOME is up on device 'emulator-5554'
[2010-12-25 22:57:59 - HelloAndroid] Uploading HelloAndroid.apk onto device 'emulator-5554'
[2010-12-25 22:58:00 - HelloAndroid] Installing HelloAndroid.apk...
[2010-12-25 22:58:43 - HelloAndroid] Success!
[2010-12-25 22:58:43 - HelloAndroid] Starting activity study.HelloAndroid.HelloAndroidActivity on device emulator-5554
[2010-12-25 22:58:44 - HelloAndroid] ActivityManager: [1] Killed am start -n stud...
注意红色部分,导致了两次完全不同的结果。
为了进一步确定是否因为版本的原因。我进一步创建了Android 2.1与Android 2.3再次测试。当然,这里没有创建新的工程,而是通道修改配置来完成。a. 修改default.properties文件,设置target=android-7(android-7就是android 2.1,android-9 就是android 2.3) b. 修改AndroidManifest.xml文件, <uses-sdk android:minSdkVersion="7" />,如果default.properties文件中的target=android-9,这里也相应要改成android:minSdkVersion="9"。同时,我们在Android SDK and AVD Manager 窗口,添加Android 2.1和Android 2.3的模拟器。如下图:
倒腾了半小,测试Android 2.1和Android 2.3都能够正常显示。显示结果如下图:
这样看来,还不是版本的问题,而是模拟器的问题。通过比较,发现Android 2.2的模拟器,有一处不其他版本的模拟器不同,多配置了一个SD Card 的Size 为 :8000(MiB),如 下图:
删除现有的模拟器,重新创建一个Android 2.2的模拟器,不再配置SD Card 的Size参数。再次运行,模拟器启动后,就可以看到梦想中的“Hello,World!”了。
至此,问题的原因,就已经清楚了。至于为什么配置SD Card后,会出现这个问题,以后再找继续解决了!
一个小小的问题,带来了不少的问题了,也花费了几个小时,去解决问题,总结问题!