Android学习之旅--Android应用结构剖析

在包管理器中展开项目后如下图所示:

项目结构的剖析
  新建的Android项目包含了src、gen、bin、assets、bin、res等目录,AndroidMainifest.xml是Android项目所必须的,其他目录、文件都是可选的。

src目录
  src只是一个普通存放Java源文件的目录。

res目录
  res是存放Android项目的各种资源文件,该目录里存放了android应用所用的全部资源,包括图片资源、字符串资源、样式资源、尺寸资源等等。
  按照资源又分为drawable、layout、menu、values目录

drawable子目录
  drawable子目录主要图片资源文件,支持的格式由.png、.jpg等位图文。
  drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi四个子目录则分别用于存放小、中、大、特大四种图片文件。

layout子目录
  layout存放界面布局文件。
    values存放各种xml格式的资源文件,如
      dimens.xml尺寸资源文件;
      string.xml字符串资源文件;
      styles.xml样式资源文件;

bin目录
  bin用于存放生成的目标文件,如Java的二进制文件、资源打包文件(.apk后缀)、Dalvik虚拟机的可执行文件性文件(.dex后缀)

gen目录
  gen用于保存Android自动生成一个R.java清单文件。
 
AndroidManifest.xml(Android应用的清单文件
  AndroidManifest.xml文件是Android项目的系统清单文件,每个项目都必须的。
  它是Android项目整个全局描述文件,用于控制Android应用的名称、图标、访问权限等整体属性。
  AndroidManifest.xml清单通常包含的信息
  (1)应用程序的包名
  (2)应用程序所包含的组件
  (3)应用程序兼容的最低版本。
  (4)应用程序使用系统所需的权限声明
  (5)其他程序访问该程序所需的权限声明 

<!-- 指定该Android应用的包名 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.hero"
    android:versionCode="1"
    android:versionName="1.0" >
    <!-- 指明该项目支持最低、和最高的SDK范围-->
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
    
   <!-- 指定Android应用标签、图标 -->
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <!-- 定义Android应用的一个组件Activity ,该activity的类为MainActivity,
               并指定Activity的标签-->
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <!--指定该Activity是程序的入口  -->
                <action android:name="android.intent.action.MAIN" />
                <!-- 指定该应用时运行该Activity -->
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

AndroidManifest.xml应用权限说明
  一个Android应用程序可能需要权限才能调用Android系统的功能,一个Android应用也可能被其他应用程序调用,因此它也需要声明调用自身所需的权限。
  1.声明该应用自身所拥有的权限
    通过<manifest.../>元素添加<users-permission.../>子元素即可自身声明权限。
     <!-- 声明该应用本身即有打电话的权限 -->
     <uses-permission android:name="android.permission.CALL_PHONE"/>

     2.声明调用该应用自身所需的权限
      通过<activity.../>元素里添加如下代码:
       <!--声明该应用本身既有打电话的权限-->
       <uses-permission android:name="android.permission.CALL_PHONE"/>

            拓展:Android usrs-prmission 权限大全

自动生成的类R.java

 

View Code
public final class R {
    public static final class attr {
    }
    public static final class dimen {
        public static final int padding_large=0x7f040002;
        public static final int padding_medium=0x7f040001;
        public static final int padding_small=0x7f040000;
    }
    public static final class drawable {
        public static final int ic_action_search=0x7f020000;
        public static final int ic_launcher=0x7f020001;
    }
    public static final class id {
        public static final int menu_settings=0x7f080000;
    }
    public static final class layout {
        public static final int activity_main=0x7f030000;
    }
    public static final class menu {
        public static final int activity_main=0x7f070000;
    }
    public static final class string {
        public static final int app_name=0x7f050000;
        public static final int hello_world=0x7f050001;
        public static final int menu_settings=0x7f050002;
        public static final int title_activity_main=0x7f050003;
    }
    public static final class style {
        public static final int AppTheme=0x7f060000;
    }
}

     R.java文件是由aapt工具根据应用中的资源文件来自动生成的,因此我们可以将R.java理解成android应用的资源字典。
    aapt生成R.java文件的两条主要规则:
    (1)每个类对应R类的一个内部类
    (2)每个具体的资源项对应于内部类的一个public static final int 类型的Field。
    随着不断的对Android项目添加资源,R.java文件的内容也会越来越多。

posted @ 2012-07-10 18:17  微特  阅读(1142)  评论(0编辑  收藏  举报