zoukankan      html  css  js  c++  java
  • Android开发环境使用工具Eclipse IDE工程目录结构

    Android开发环境使用工具Eclipse IDE工程目录结构

    一、Eclipse IDE新建Android工程项目后的界面(Android 2.3.3版本)

    1、src目录:存放工程项目的源代码(逻辑编程程序),包含即将创建的Java源代码(逻辑编程程序)文件,根据package结构管理的,与普通java项目中的/src目录很相似。

    2、gen目录:自动生成的文件目录。该目录下的所有文件都是ADT(Android Development Tools,即安卓开发工具,为Android开发提供开发工具的升级和变更。)自动生成的,一般并不需要去修改,实际上该目录下只定义了一个R.java文件,该文件相当于工程项目的字典,为工程项目中用户界面、字符串、图片尺寸等资源都会在该类中创建其惟一的ID,当工程项目中使用这些资源时,会通过该ID来引用这些资源。

    3、Android版本目录:该目录包含了工程项目需要的库文件(Jar文件),这和普通Java项目中的/lib目录很相似。同时其中还包含工程项目打包时所需的META-INF目录。

    4、AndroidDependencies目录下的assets目录:资源路径目录,不会在R文件注册。该目录用于存放工程项目相关的资源文件,这个目录和res目录包含的xml文件差不多,也是应用程序中要引用到的一些外部资源。但主要区别在于这些资源是以原始格式保存,且只能用编程方式读取。例如文本文件,视频文件,MP3音频等媒体文件。区别于res目录包含图片、布局文件以及参数描述文件等。

    5、res目录:该目录用于存放应用程序中经常使用的资源文件,其中包括图片、布局文件以及参数描述文件等。区别于AndroidDependencies目录下的assets目录包含文本文件,视频文件,MP3音频等媒体文件。

    6、AndroidManifest.xml文件:应用程序应用功能清单文件。该文件包含了Android应用程序应用功能信息,是每个Android项目工程中的重要文件,在软件安装的时候被读取。Android中的四大组件(Activity、ContentProvider、BroadcastReceiver、Service)都需要在该文件中,以及运行这个Android应用程序所需的用户权限列表,例如:电话、短信、互联网、访问SD卡,同时也详细描述了Android应用的项目结构。

    7、proguard-project.txt文件:用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代码被别人破解,通常会将代码混淆,从而让破解者难以阅读。

    8、project.properties文件:工程项目属性的配置文件,配置编译的版本等。ADT14 以后, project.properties和default.properties合并成了project.propert  ies。供Eclipse使用,用来读取该工程项目中所使用的Android版本号。

    二、src目录:存放工程项目的源代码(逻辑编程程序),包含即将创建的Java源代码(逻辑编程程序)文件,根据package结构管理的,与普通java项目中的/src目录很相似。其中cn.com.qiang.helloworld 是包名,MainActivity.java 是默认的源代码文件。如下图所示。

    打开src目录下MainActivity.java文件后的源代码(逻辑编程程序)如下所示。

    package cn.com.qiang.helloworld;
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
      public class MainActivity extends Activity 
    { @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu)
    {
    // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }

    三、gen目录:自动生成的文件目录。该目录下的所有文件都是ADT(Android Development Tools,即安卓开发工具,为Android开发提供开发工具的升级和变更。)自动生成的,一般并不需要去修改,实际上该目录下只定义了一个R.java文件,该文件相当于工程项目的字典,为工程项目中用户界面、字符串、图片尺寸等资源都会在该类中创建其惟一的标识号,当工程项目中需要使用这些资源时,会通过调用R.java文件下该标识号来索引相应标识号所对应的资源文件。如下图所示。

    打开gen目录下R.java文件后的源代码(R程序)如下所示(其中一部分)。

      public final class R
    {
       public static final class attr
     {
      }
      public static final class drawable//对应res目录下的drawble文件
    {
       public static final int ic_launcher=0x7f020000;
       public static final int p0015=0x7f020001;
       public static final int p0022=0x7f020002;
      }
      public static final class id 
    {
       public static final int action_settings=0x7f080000;
      }
      public static final class layout//对应res目录下的layout文件 
    {
       public static final int activity_main=0x7f030000;
      }
      public static final class menu//对应res目录下的menu文件 
    {
       public static final int main=0x7f070000;
      }
      public static final class string//对应res目录下的string文件
    {
       public static final int action_settings=0x7f050001;
       public static final int app_name=0x7f050000;
       public static final int hello_world=0x7f050002;
      }
    }

    由以上可知:R.java文件中默认有 attr、drawable、id、layout、string 等四个静态内部类,每个静态内部类分别对应一种资源。在xml文件中 , 比如main .xml或AndroidMainfest.xml文件中通过“@drawable/icon”的方式来调用R.java文件下静态内部类"drawable"下静态属性"icon"(标识号)来索引含有该静态属性"icon"(标识号)的“drawable-hdpi”资源文件来获取drawable-hdpi”资源文件下的图片资源。其中“@”代表的是 R.java 类,“drawable”代表 R.java中的静态内部类“drawable”,“/icon”代表静态内部类“drawable”中的静态属性“icon”,即标识号。而该属性可以指向res目录下的“drawable-hdpi”中的 icon.png 图标。还有一种情况:在用户界面布局文件中,当我们需要为一些组件(控件)添加、id属性作为标示,可以使用如下的表达式"@+id/string_name"。其中“@”代表的是R.java类,“+”表示在R.java的名为id的内部类中添加一条记录,"id"表示R.java 类下的id静态内部类。如 "@+id/button"的含义是在 R.java 文件中的id这个静态内部类添加一条常量名为button,该常量就是该资源的标识号。如果id这个静态内部类不存在,则会先生成它。通过该方式生成的资源标识号,仍然可通过"@id/string_name"方式来调用R.java文件下静态内部类"id"下静态属性"string_name"(标识号)来索引含有该静态属性"string_name"的某资源文件来获取某资源文件下的资源。另外在逻辑编程文件(即java文件)中可以通过 Button btn = (Button) findViewById(R.id.button)来引用button。再如layout静态内部类对应layout中的用户界面布局文件,其中每个静态内部类中的静态常量分别定义一条资源标识号,如“ public static final int  main=0x7f030000;”中的main,对应的是layout目录下的main.xml 文件。具体的对应关系,如下图所示。

    由以上可知:当开发者在 res目录中任何一个子目录中添加相应类型的文件之后,ADT会在 R.java 文件中相应的匿名内部类当中自动生成一条静态int 类型的常量,对添加的文件进行索引。如果在layout目录下在添加一个新的界面,那么在public static final class layout 中也会添加相应的静态int常量。相反的,当我们在res目录下删除任何一个文件,其在R.java中对应的记录会被ADT自动删除。 再比如说我们在strings.xml添加一条记录,在R.java的string内部类中也会自动增加一条记录

    四、Android版本目录:该目录包含了工程项目需要的库文件(Jar文件),这和普通Java项目中的/lib目录很相似。同时其中还包含工程项目打包时所需的META-INF目录。

    五、AndroidDependencies目录下的assets目录:资源路径目录,不会在R文件注册。该目录用于存放工程项目相关的资源文件,这个目录和res目录包含的xml文件差不多,也是应用程序中要引用到的一些外部资源。但主要区别在于这些资源是以原始格式保存,且只能用编程方式读取。例如文本文件,视频文件,MP3音频等媒体文件。区别于res目录包含图片、布局文件以及参数描述文件等。

    六、bin目录:编译生成目录。属于二进制文件,包括class、资源文件、dex、apk等。

    七、res目录:该目录用于存放应用程序中经常使用的资源文件,其中包括图片、布局文件以及参数描述文件等。区别于AndroidDependencies目录下的assets目录包含文本文件,视频文件,MP3音频等媒体文件。

    (1)、drawable-*dpi文件夹:有四个文件夹,用于存储.png、.9.png、.jpg等图片资源(.9.png是Android特有的图片格式,可以根据情况进行拉伸,达到不变形的效果。),区别只是将图标按分辨率高低来放入不同的目录。drawable-hdpi:用来存放高分辨率的图标。drawable-mdpi:用来存放中等分辨率的图标。drawable-ldpi:用来存放低分辨率的图标。程序运行时可以根据手机分辨率的高低选取相应目录下的图标。不过,如果不想准备过多图片,那么也可以只准备一张图标将其放入三个目录的任何一个中去。

    (2)、layout文件夹:存放应用程序的布局文件,这些layout是以xml形式保存的,关于layout的进一步信息,可以参考android文档中的UI layout。

    打开layout文件夹下的activity_main.xml文件后源代码如图所示。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent" >
      <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    </LinearLayout>

    (3)、menu文件夹:设置菜单文件夹

    (4)、values文件夹:这个目录包含了一些xml文件,主要是应用程序中要引用的key-value对。这些xml文件声明了数组(array)、颜色(color)、度量(dimension)、字符串(strings)等。之所以把这些东西分别放在单独的xml文件中,原因有二。拿strings.xml文件来说。原因一:主要是考虑到这些值能够在不更改源代码的情况下,可用于多语言环境。原因二:减少应用程序的体积,降低数据冗余。假设在应用程序中要使用“我们一直在努力”这段文字 10000 次,如果我们不将“我们一直在努力”定义在 strings.xml 文件中,而是在每次使用时直接写上这几个字,这样下来程序中将有 70000个字,这 70000 个字占 136KB 的空间。由于手机的资源有限,其 CPU 的处理能力及内存是非常有限的,136KB 对手机程序来说是个不小的空间,在做手机应用程序一定要记住“能省内存就省内存”。如果将这几个字定义在 strings.xml 中,在每次使用到的地方通过调用Resources 类的getResources()方法来引用该文字,就只占用了 14B,因此对降低应用体积效果是非常有效地。当然我们可能在开发时可能并不会用到这么多的文字信息,但是“不以善小而不为,不以恶小而为之”,作为手机应用开发人员,我们一定要养成良好的编程习惯。

    分别打开value文件夹下的strings.xml文件、dimens.xml文件、styles.xml、colors.xml、arrays.xml文件后源代码如图所示。

    1、strings.xml文件:源代码如下所示,用来定义字符串数据,在 Activity 中使用 getResources().getStrings(resourceId)或getResources().getText(resourc) eId)来取得这些资源,在layout.xml中使用android:text="@string/hello_world"来取得这些资源。

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
      <string name="app_name">QQ</string>
      <string name="action_settings">Settings</string>
      <string name="hello_world">你好啊!!哈哈!!</string>
    </resources>

    2、dimens.xml文件:源代码如下所示,dp表示宽度,sp表示字体大小。用来定义尺寸数据,在 Activity 中使用 getResources().getDimension(resourceId)来取得这些资源。

    <?xml version="1.0" encoding="UTF-8"?>
    <resources>
      <!-- Default screen margins, per the Android Design guidelines. -->
      <dimen name="activity_horizontal_margin">16dp</dimen>
      <dimen name="activity_vertical_margin">16dp</dimen>
    </resources>

    3、styles.xml文件:源代码如下所示。用来定义样式。

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
      <style name="sharpText">
        <item name="android:textSize">18px</item>
        <item name="android:textColor">#008</item>
      </style>
    </resources>

    4、colors.xml文件:源代码如下所示。用来定义颜色,在 Activity 中使用getResources().getDrawable(resourceId) 与getResources().getColor(resourceId)来取得这些资源。

    <?xml version="1.0" encoding="UTF-8"?>
    <resources>
      <color name="contents_text">#ff000000</color>
    </resources>

    5、arrays.xml文件:源代码如下所示。用来定义数组,在 Activity 中使用getResources().getStringArray(resourceId)来取得String 数组资源。

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
      <string-array name="sports">
        <item>足球</item>
        <item>篮球</item>
        <item>太极</item>
        <item>乒乓球</item>
     </string-array>
    </resources>

    八、AndroidManifest.xml文件:应用程序应用功能清单文件。该文件包含了Android应用程序应用功能信息,是每个Android项目工程中的重要文件,在软件安装的时候被读取。Android中的四大组件(Activity、ContentProvider、BroadcastReceiver、Service)都需要在该文件中,以及运行这个Android应用程序所需的用户权限列表,例如:电话、短信、互联网、访问SD卡,同时也详细描述了Android应用的项目结构。主要包含以下功能。

    1、命名应用程序的 Java 应用包,这个包名用来唯一标识应用程序。

    2、描述应用程序的组件——活动、服务、广播接收者、内容提供者,对实现每个组件和公布其功能(比如,能处理哪些意图消息)的类进行命名。这些声明使得 Android 系统了解这些组件以及它们在什么条件下可以被启动。

    3、决定应用程序组件运行在哪个进程里面。

    4、声明应用程序所必须具备的权限,用以访问受保护的部分 API,以及和其它应用程序交互。

    5、声明应用程序其他的必备权限,用以组件之间的交互。

    6、列举测试设备 Instrumentation 类,用来提供应用程序运行时所需的环境配置及其他信息,这些声明只在程序开发和测试阶段存在,发布前将被删除。

    7、声明应用程序所要求的 Android API 的最低版本级别。

    8、列举 application 所需要链接的库。

    打开AndroidManifest.xml文件后的源代码如图所示。

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="cn.com.qiang.helloworld"
      android:versionCode="1"
      android:versionName="1.0" >
      <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="10" />
        <application
          android:allowBackup="true"
          android:icon="@drawable/p0015"
          android:label="@string/app_name"
          android:theme="@style/AppTheme" >
        <activity
          android:name="cn.com.qiang.helloworld.MainActivity"
          android:label="@string/app_name" >
          <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
        </activity>
       </application>
    </manifest>

    (1)、<manifest>元素语句

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cn.com.qiang.helloworld"
    android:versionCode="1"
    android:versionName="1.0">

    该元素是 AndroidManifest.xml 文件的根元素。其中根据 xml 文件的语法 ,“ xmlns:android ”指定该文件的命名空间 。 功能清单文件会使用“http://schemas.android.com/apk/res/android”所指向的一个文件。“package”属性是指定 Android 应用所在的应用程序包,以后会经常说到“应用程序包”,“应用程序包”就是指该属性的内容。“android:versionCode”指定应用程序的版本号,如果应用程序需要不断升级,在升级的时候应该修改该值。“android:versionName”是版本名称,名称的取定可根据爱好而定。

    (2)、<application>元素语句

     <application
       android:allowBackup="true"
       android:icon="@drawable/icon"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
       <activity
         android:name="cn.com.qiang.helloworld.MainActivity"//或写成android:name=".MainActivity"
         android:label="@string/app_name" >
         <intent-filter>
           <action android:name="android.intent.action.MAIN" />
           <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
       </activity>
     </application>

    1、<application>的“icon”属性用来设定应用程序的图标,表达式icon="@drawable/icon" 表示通过调用R.java文件下静态内部类"drawable"下"icon"(标识号)来索引"icon"(标识号)所对应“drawable-hdpi”资源文件来获取图片资源。指向的是"drawable"文件 下的icon.png 图片,与R.java中元素的对应关系,如下图所示。

    2、<application>的“label”属性用来设定应用程序的名称。表达式 “@string/app_name”含义与上面的表达式“@drawable/icon”一样,同样是指向 R.java 文件中的string静态内部类中的 app_name 属性所指向的资源。在这里它指向的是“strings.xml”文件中的一条记录“app_name”,其值为“QQ”,因此,这种表达方式等价于 android:label= " QQ"。

    3、<application>的“theme”属性用来设定应用程序的主题样式。表达式 “@style/AppTheme”含义与上面的表达式“@drawable/icon”一样,同样是指向 R.java 文件中的style静态内部类中的AppTheme属性所指向的资源。在这里它指向的是“style.xml”文件中的一条记录“AppTheme”。

    4、<activity>元素的作用是注册一个Activity信息,当我们在创建“01_项目名”这个工程项目时,指定Create Activity属性为“MainActivity”,之后 ADT在生成工程项目时自动创建了一个 Activity名称,就是“MainActivity.java”,Activity在Android中属于组件,它需要在功能清单文件中进行配置。<activity>元素的“name”属性指定的是该Activity的类名。可以看到这个属性值“.MainActivity”中的“.”,“.”代表的是在上面<manifest>元素“package”属性中指定的当前包。因而“.MainActivity”的含义等价于“cn.com.qiang.helloworld.MainActivity.java”。

    5、<intent-filter>元素中intent的中文可以理解为“意图、目的”之类的意思。首先简单介绍什么是Intent。应用程序的核心组件(活动、服务和广播接收器)通过Intent被激活,Intent代表的是你要做的一件事情,代表你的目的,Android寻找一个合适的组件来响应这个Intent,如果需要会启动这个组件一个新的实例,并传递给这个Intent对象。组件通过Intent 过滤器通告它们所具备的功能——能响应的Intent类型。

    6、 <intent-filter>元素语句

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    (1)、android.intent.action.MAIN:决定应用程序入口Activity,也就是我们启动应用时首先显示的Activity。

    (2)、android.intent.category.LAUNCHER:表示Activity被列入系统的启动器(launcher),允许用户启动它。launcher是安卓系统中的桌面启动器,是桌面UI的统称。

    (3)、如果创建了多个Activity,在AndroidManifest.xml 文件下会相应生成以顺序来命名的Activity,如:<activity android:name=".SecondActivity"></activity>、<activity android:name=".ThreeActivity"></activity>等。

    九、proguard-project.txt文件:用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代码被别人破解,通常会将代码混淆,从而让破解者难以阅读。

    十、project.properties文件:工程属性的配置文件,配置编译的版本等。ADT14 以后, project.properties和default.properties合并成了project.properties   。供Eclipse使用,用来读取该工程项目中所使用的Android版本号。

    十一、Eclipse IDE新建Android工程项目后的界面(Android 6.0版本)

  • 相关阅读:
    css页面自适应 媒体查询
    微信小程序rich-text中的nodes属性
    解析base64数据流---加载pdf
    用伪元素完成箭头
    搭建vue --2.x
    搭建Vue项目 vue-cli vue1.x
    Chrome----TCP
    单进程VS多进程
    线程VS进程
    Chrome---network模块---Timing
  • 原文地址:https://www.cnblogs.com/AChenWeiqiangA/p/13054313.html
Copyright © 2011-2022 走看看