5、Android入门-Eclipse的Android项目结构和AndroidManifest.xml

如果使用Eclipse + ADT开发Android,则Android工程主要的目录有:src、bin、gen、res等。

不同的Android平台目录结构是不同的,下面以Android 2.3.3 为例介绍Android 在Eclipse 中的目录结构,下面是目录结构:
 

这里01_项目名当然就是我们的项目名了,下面分别对各目录进行解析。

1. Src

该目录中存放的是该项目的源代码,这个目录包含了你即将创建的Java源代码文件,这个目录里的文件是根据package结构管理的,它与普通java项目中的/src目录很相似。

如上图所示,其中cn.com.qiang.helloworld 是包名,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;
    }
    
}

Activity 就是我们大名鼎鼎的Android 四大组件之一,主要实现我们打开app 所看到的界面。 

2.Gen

自动生成的文件目录。该目录下的文件全部都是ADT自动生成的,一般并不需要去修改,实际上该目录下只定义了一个R.java文件,该文件相当于项目的字典,为项目中用户界面、字符串、图片等资源都会在该类中创建其惟一的ID,当项目中使用这些资源时,会通过该ID得到资源的引用。

我们可以看看其中的代码:

 public static final class drawable {
        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 {
        public static final int activity_main=0x7f030000;
    }
    public static final class menu {
        public static final int main=0x7f070000;
    }
    public static final class string {
        public static final int action_settings=0x7f050001;
        public static final int app_name=0x7f050000;
        public static final int hello_world=0x7f050002;
    }

这是其中的一部分,我们可以看到其中各个资源的ID。

3.Android {版本号}

这个目录包含了项目需要的库文件(Jar文件),这和普通Java项目中的/lib目录很相似。同时其中还包含项目打包时需要的META-INF目录。

4.Android Private Libraries

所有的第三方JAR包引入都被放入了Android Private Libraries中。

5.assets

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

6.bin

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

可以看到,这里01_项目名.apk 就可以直接在手机里安装使用了。

7.res(这个就很重要了)

该目录用于存放应用程序中经常使用的资源文件,其中包括图片、布局文件以及参数描述文件等,其中包括多个目录。

a) 其中以drawable开头的四个文件夹用于存储.png、.9.png、.jpg等图片资源(.9.png是Android特有的图片格式,可以根据情况进行拉伸,达到不变形的效果),他们的分辨率率从高到低,如果你打算在android应用中包含一个图片或者图标,就应该把它们放在这个目录。

可以看到,我们的drawable-hdpi 文件中有三个图片,注意:图片名字不能有大写字母和汉字,我们可以用F2修改其名字,且调用图片时,是不需要添加.png的

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

<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>

其中TextView显示一个文件系统提供的空间。

Eclipse 同时为我们提供了Graphic Layout (可视化布局) :

c) menu

memu主要用设置菜单文件。

d) values

这个目录也包含了一些xml文件,但主要是应用中要引用的key-value对。这些XML文件声明了数组(Array)、颜色(color)、度量(Dimension)、字符串。之所以把这些东西分别放在单独的xml文件中主要是考虑到这些值能够在不更改源代码的情况下用于多语言环境。例如,根据用户语言的不同应用程序中的信息可以有多种语言版本。

  • 1) strings.xml 文件—— 字符串资源文件,可以看一下源代码:
<?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>

.xml 文件调用用strings中的字符串时,需这样调用:

android:text="@string/hello_world"

@string/+<string name>,则会调用strings.xml中定义的字符串;

Java源代码需调用字符串时,则需要调用gen中的R.string这样来使用字符串;

  • 2) dimens.xml 文件,主要用来设置文件的宽度和高度
<resources>
 
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
 
</resources>

这里 dp—宽度,sp— 字体大小。

8.AndroidManifest.xml

AndroidManifest.xml文件是整个应用程序的信息描述文件,定义了应用程序中包含的Activity,Service,Content provider和BroadcastReceiver组件信息。

每个应用程序在根目录下必须包含一个AndroidManifest.xml文件,且文件名不能修改。

AndroidManifest.xml文件主要提供了如下的信息描述:

  • 命名应用程序的java包,这个包名将用来唯一标识这个应用程序。
  • 描述了应用程序中包含的Activity,Service,ContentProvider和BroadcastReceiver组件
  • 定义了应用程序运行的进程
  • 声明了应用程序需要访问受限API所需的权限
  • 声明其他程序如果希望访问本程序组件所需要的权限
  • 声明应用程序能够正常运行所需要的最小级别的OphoneAPI
  • 列出应用程序运行所需要连接的库
<?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>

a)每个activity 都要注册,注册的方式写上“包名+类名”即可

android:name="cn.com.qiang.helloworld.MainActivity"

b)、必须有一个activty 作为入口界面

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

intnet-filter 被称为意图过滤器。

9. proguard-project.txt

代码混淆相关文件

10.project.properties

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值