Android学习笔记(二)创建新Project及结构说明

一、废话

  我准备一直用这种很不伦不类的行文格式继续我的学习笔记,从初中到考大学,我的写作格式都被老师们所唾弃,包括我的数学。在有了Eclipse和VS等强大的IDE后,我表示写程序格式毫无压力!

二、正文

  1、创建Project

    1. 当然第一步就是打开我们的Eclipse软件,File->New->Android Project,出现如图界面:

      选择我们需要的android版本。

    2. 我们来解释下各项所代表的意思和其作用:
      1. Project name:工程名,可以随意填写。
      2. Contents:这个询问你是否需要在一个已有的工程或者源文件的基础上新建工程,当然我们这里选择Create new project in workspace。
      3. Location:存放工程文件的目录。
      4. Build Target:所建工程主要面向哪个版本的平台,目前最新为4.0,我们选择2.3。
      5. Application name:应用程序的名字,以后如果你的程序要被人使用,那么别人看到的就是这个名字。当然APP name可以在Layout\values\string.xml文件中修改,在此处不能为空。
      6. Package name:也就是存放我们源文件的地方。我想有java开发经验和C#开发经验(类似于namespace)的人对此一定不陌生,其最大的作用就是能够防止类名冲突,使软件的整体结构清晰明了。
      7. Create Activity:一个APP中,必须有一个Activity文件,在新建一个Project时,系统会默认为你创建一个Activity。
      8. Min SDK Version:应用程序可以运行的API最低版本。在Android平台中,API级别和平台版本是一一对应的,从最老版的Android 1.0到现在的Android 4.0 级别一共有14个级别,详细的可以查看官方的帮助文档。也就是说,我们的这个值和我们选择的Android版本是有直接关系的,在上面我们选择2.3版本,所以Min SDK Version=9 。当然这个值可以修改,但是在配置文件中会有告警,而且如果运行在低版本(如1.5)上,有可能导致应用程序崩溃。

  2、Project结构解析

    1. 在Project创建好后,如下图所示:

    2. 工程文件展开后,跟路径下一共包含8个文件及文件夹。
      1. src:存放用户编写的源文件的位置,里面默认包含了一个和我们APP name一直的**Activity.java文件。
         1//引用的包名
        2package LiB.Demo;
        3
        4import android.app.Activity;
        5import android.os.Bundle;
        6//创建一个Activity最首要的因素就是要该类继承自Activity类,关于Activity将在笔记三种详细介绍
        7publicclass MytestAppActivity extends Activity {
        8/** Called when the activity is first created. */
        9 @Override
        10publicvoid onCreate(Bundle savedInstanceState) {
        11super.onCreate(savedInstanceState);
        12//请看gen 的介绍
        13 setContentView(R.layout.main);
        14 }
        15 }
      2. gen:这个文件夹是有android开发工具自动生成的,里面有一个R.java文件。会自动更具我们在res文件夹中放入的资源分类的创建一个全局唯一的ID。
         1/* AUTO-GENERATED FILE.  DO NOT MOD
        2 *
        3 * This class was automatically generated by the
        4 * aapt tool from the resource data it found. It
        5 * should not be modified by hand.
        6*/
        7//在上面这段话中应该看出来了,R.java是有开发工具自动生成,不需要我们去修改,如果修改后将导致我们的APP找不到需要的资源ID而报错
        8package LiB.Demo;
        9
        10publicfinalclass R {
        11publicstaticfinalclass attr {
        12 }
        13publicstaticfinalclass drawable {
        14publicstaticfinalint icon=0x7f020000;
        15 }
        16//在 MytestAppActivity中的setContentView(R.layout.main)方法的参数
        17//对应res\layout\main.xml
        18publicstaticfinalclass layout {
        19publicstaticfinalint main=0x7f030000;
        20 }
        21//对应res\values\string.xml
        22publicstaticfinalclass string {
        23publicstaticfinalint app_name=0x7f040001;
        24publicstaticfinalint hello=0x7f040000;
        25 }
        26 }
      3. android 2.3 :SDK的jar包,有兴趣的朋友可以帮助文档上去看看。
      4. assets & res:这两个文件中存放的都可以是APP的资源文件,唯一不同的是res中的资源会在R.java中由开发工具编译并自动生成一个唯一的ID,而在assets中就会保存成原来的格式而不会在R.java中生成唯一ID,如果要引用在assets文件夹中的资源,则需要使用getAssets()方法以及InputStream等文件操作方面的知识。所以一般较大的资源文件都建议放在assets文件夹中。
        1. res文件夹中drwable-*的三个文件夹放置的使我们的图标。分别对应高、低、中三个不同的分辨率,手机会根据自己的分辨率来选择合适的图标已达到最好的显示效果。
        2. res\layout:存放被编译为屏幕布局(或屏幕的一部分)的XML文件。文件名对应R.java中的字段名。新建布局文件New->Android XML File->Layout。
           1 <?xml version="1.0" encoding="utf-8"?>
          2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          3 android:orientation="vertical"
          4 android:layout_width="fill_parent"
          5 android:layout_height="fill_parent"
          6 >
          7 <TextView
          8 android:layout_width="fill_parent"
          9 android:layout_height="wrap_content"
          10 android:text="@string/hello"
          11 <!-- 为TextView创建一个ID,在R.java中将自动生成其ID的唯一值,方便引用 -->
          12 android:id="@+id/textView_1"
          13 />
          14 </LinearLayout>
        3. res\values:在layout中只能存放屏幕布局的xml文件,而在values中可以存放很多种可以编译的xml文件。新建文件New->Android XML File->values。建议最好在以后的Android学习或者开发过程中,把布局文件上需要的值都统一放到values中,这样方便修改。
    3. androidManifest.xml:当Android启动一个应用程序时,它必须首先知道这个程序的存在,并且要知道这个程序将会访问到那些设备或者数据,这个应用程序本身的一些配置属性如它的APP name,Logo之类的。manifest文件就是配置这些信息的。当你的应用程序请求访问蓝牙或者WIFI时,就需要在manifest文件中配置响应的属性。关于manifest文件的详细信息,可以查看官方帮助文档
       1  <?xml version="1.0" encoding="utf-8"?>
      2//在pakeage中指定了应用程序要使用的包名以及程序版本
      3 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      4package="LiB.android_1" android:versionCode="1" android:versionName="1.0">
      5//API等级
      6 <uses-sdk android:minSdkVersion="9" />
      7//在application节中定义了程序的Logo,程序名,默认启动的Activity
      8 <application android:icon="@drawable/icon" android:label="@string/app_name">
      9 <activity android:name=".Android_1Activity" android:label="@string/app_name">
      10//intent-filter——intent过滤器,这个将在后面的笔记中介绍,现在需要知道的就是action为动作,category为动作类型,当配置了以下过滤器后,activity中注册的Android_1Activity文件将作为默认启动的Activity文件
      11 <intent-filter>
      12 <action android:name="android.intent.action.MAIN" />
      13 <category android:name="android.intent.category.LAUNCHER" />
      14 </intent-filter>
      15 </activity>
      16 </application>
      17 </manifest>
    4. default.properties:开发工具自动生成,说明这个应用程序所针对的Android平台版本。
    5. proguard.cfg:在说这个前我想说说前两天看到的一篇博文,说是愤怒的小鸟被反编译成了源码,我也很感兴趣的看了下,很不幸,里面的类名什么的都是被混淆过的,都是abc什么一类的没有具体意义的名字。我们文件夹中多出的这个proguard.cfg文件就是ADT自带的混淆代码的脚本配置文件。如果你以后开发了一个很牛的软件,然后不想让人家知道了里面具体的实现代码,那么这就是一个很好的东西了。关于如何使用这个配置文件,还在研究中。

  3、运行Project,右键Android_1,Run as->Android Application。如果没有错误,那么稍等片刻如下图所示:

   是的,我们有落入了Helloworld的俗套中,如果你不想落入俗套,那么试着修改下程序。

   4、关于SDK中自带的帮助文档,在..\android-sdk-windows\docs\reference\中打开classes.html,可以按照索引来查看所需要的东西。这个SDK的帮助文档全部是英文的,但是看起来也不算很费劲。

三、总结

  在上面主要介绍了一个新建的Project里面所包含的文件以及这个文件的作用,当然讲的可能十分的粗略或者有理解不到位的地方,希望有同学可以指出来。另外预告下在笔记三中将详细介绍Activity及Intent。

posted @ 2011-12-07 19:57  Libo@Deng  阅读(7527)  评论(2编辑  收藏  举报