android学习之路2:HelloWorld、程序调试入门、Android自带程序体验
刚学一门技术,或者刚开始开发一门新技术的时候,大米总会干三件事情,干完后就会去happy的吃饭、洗澡、聊天、睡觉了。这三件事情是:1,helloworld;2,学会程序调试;3,体验官方提供给我们的源码项目,个人认为这三样学会了,就在学习之路上多了几样法宝,接下来的路会好走很多。三件事情大概花了我2个小时,现在就来详细的跟大家分享一下吧!
1,Helloworld程序创建
打开Eclipse,File>NEW>打开如下窗体:
项目创建后,编译>右键点击项目HelloWorld>Run as>Android Application打开虚拟机,点击虚拟机右侧的MENU按钮,左侧手机屏幕就会显示sayhello这个手机应用,如图:
点击sayhello,出现页面
同志们,HelloWorld程序就创建好了。接下来我们具体看下HelloWorld的项目结构,大米通过看懂这个项目的结构,总算摸到了一些Android的门道哦,先看项目结构图:
我一一来解释一下(当然不一定正确,毕竟我只是菜鸟,哈哈):
1.1,src目录,放置我们开发的源文件的目录,这个不用多说。
1.2,gen目录,这个目录是ADT插件帮我们生成的文件目录,打开R.java,就能看到ADT帮我们生成的成员变量,内部类等,都是自动生成的,不需要我们去修改
1.3,Android 2.2目录,里面是jar文件,这个也不用多说,这个是整个程序的大脑,是Android提供的一些类文件。
1.4,res和assets目录,这两个目录都可以存放一些文件,两个目录的区别是assets目录里面可以存放任何项目需要的文件而且不会在R.java中有任何记录,但是res目录所放置的所有资源文件都会在R.java文件中自动生成一个ID,于是程序中可以用这个ID来引用这个文件,我们打开R.java文件看一下就明白了:
package HelloWorld.demo;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
drawable、layout、string类就对应了res目录下面的子目录。drawable目录主要存放图片资源,layout目录主要存放布局文件,string目录主要存放键值对(比如用于国际化等)。
1.5AndroidManifest.xml是系统的配置文件
2,程序调试入门
2.1 logCat
在logCat窗体输出调试信息的方式来进行程序调试。eclipse中选择DDMS工具,找到其中的logCat窗体,这个窗体中就会显示所以调试的日志信息,如图:
当程序报错的时候这个logCat中也会出现错误信息,这样我们就能迅速找到错误的原因了。
如果我要查看程序运行中的某个变量的值是多少,也很简单,首先我们在LogCat窗体的右上角中点击绿色的加号按钮,出现如下窗体:
点击ok,此时LogCat窗体下面多了一个叫做SystemOutLog的tab,如图:
接着看代码中的调试信息实现(这里我们以helloworld项目为例):
//主窗体初始化事件中增加日志输出语句
public class index extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("my log info will appear in Systemoutlog tab......");
setContentView(R.layout.main);
}
}
此时debug程序,最后会在LogCat中出现信息,如图:
这种调试方式在DDMS中是最简单的方式,还有各种各样的调试程序的方法,这个大米在今后的日子里还会多多研究的。
2.2 跟java项目一样,设置断点,然后debug项目,当程序执行到断点处的时候,自动停留在断点处等待程序员去调试。
3,Android自带程序体验
其实就是android 提供给我们参考的samples,这些源码我们下载安装的SDK目录下面就有,如图:
这里的例子是在是太多了,有记事本的源码(NotePad),有api介绍的源码,有游戏的源码(贪吃蛇)等等等等。这里大米就介绍一款游戏吧,叫做JetBoy,这款游戏是具备声音支持的游戏事例,当然其中的代码我还没有领悟过,我只是搭建一个项目然后能使这款游戏在虚拟机中等跑起来,玩起来。
要让JetBoy这款游戏跑到你的虚拟机当中,其实很简单,首先像建HelloWorld工程一样建一个JetBoy的工程,然后打开源码中的文件如图:
分别把res资源和src资源覆盖到新建的JetBoy对应目录下面去(可能有人会问我为什么不直接导入已经有的工程项目呢?这里大米试着导入过,不过都提示有问题,所以就用了最简单粗暴的方法),当然src下面那些java文件中引入的包名需要改一下(会有提示错误的,找到要改的地方还是很简单的),另外还有修改res下面的layout目录下的main.xml文件,因为里面也有一些包名需要改一下。编译通过,运行,看虚拟机,打开应用,如图:
JetBoy游戏正常跑起来了!
虽然大米还没有看过JetBoy游戏的源码,但是也已经很满足了。个人认为一下子看这个游戏的代码会有点吃力,不求甚解是我一直坚持的,我会转而先看些简单的例子,等时间成熟了再来参悟这款游戏的代码。
这是大米的第二篇博客,写的还是一如既然的差吧?呵呵,大米只能说以后再改进了,快凌晨了,还是睡觉吧,明天周一要上班,虽然对我来讲凌晨还算很早很早...