Android工程目录
  
如果使用Eclipse插件ADT开发应用程序,必须要熟悉工程的目录结构,清楚各个目录下面放置的是什么东西。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 是默认的源代码文件,我们可以打开看一下里面的代码:

[java] view plaincopy
  1. package cn.com.qiang.helloworld;
  2. import android.os.Bundle;
  3. import android.app.Activity;
  4. import android.view.Menu;
  5. public class MainActivity extends Activity {
  6. @Override
  7. protected void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.activity_main);
  10. }
  11. @Override
  12. public boolean onCreateOptionsMenu(Menu menu) {
  13. // Inflate the menu; this adds items to the action bar if it is present.
  14. getMenuInflater().inflate(R.menu.main, menu);
  15. return true;
  16. }
  17. }

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

2.Gen:

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

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

[java] view plaincopy
  1. public static final class drawable {
  2. public static final int ic_launcher=0x7f020000;
  3. public static final int p0015=0x7f020001;
  4. public static final int p0022=0x7f020002;
  5. }
  6. public static final class id {
  7. public static final int action_settings=0x7f080000;
  8. }
  9. public static final class layout {
  10. public static final int activity_main=0x7f030000;
  11. }
  12. public static final class menu {
  13. public static final int main=0x7f070000;
  14. }
  15. public static final class string {
  16. public static final int action_settings=0x7f050001;
  17. public static final int app_name=0x7f050000;
  18. public static final int hello_world=0x7f050002;
  19. }

这是其中的一部分,我们可以看到其中各个资源的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。可以看看默认的文件:

[java] view plaincopy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent" >
  5. <TextView
  6. android:layout_width="wrap_content"
  7. android:layout_height="wrap_content"
  8. android:text="@string/hello_world" />
  9. </LinearLayout>

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

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

c) menu

memu主要用设置菜单文件

d) values

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

1) strings.xml 文件—— 字符串资源文件,可以看一下源代码

[java] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <string name="app_name">QQ</string>
  4. <string name="action_settings">Settings</string>
  5. <string name="hello_world">你好啊!!哈哈!!</string>
  6. </resources>

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

[java] view plaincopy
  1. android:text="@string/hello_world"

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

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

2) dimens.xml 文件,主要用来设置文件的宽度和高度

[java] view plaincopy
  1. <resources>
  2. <!-- Default screen margins, per the Android Design guidelines. -->
  3. <dimen name="activity_horizontal_margin">16dp</dimen>
  4. <dimen name="activity_vertical_margin">16dp</dimen>
  5. </resources>

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

3) stypes.xml 文件

8.AndroidManifest.xml:

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

[java] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="cn.com.qiang.helloworld"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6. <uses-sdk
  7. android:minSdkVersion="10"
  8. android:targetSdkVersion="10" />
  9. <application
  10. android:allowBackup="true"
  11. android:icon="@drawable/p0015"
  12. android:label="@string/app_name"
  13. android:theme="@style/AppTheme" >
  14. <activity
  15. android:name="cn.com.qiang.helloworld.MainActivity"
  16. android:label="@string/app_name" >
  17. <intent-filter>
  18. <action android:name="android.intent.action.MAIN" />
  19. <category android:name="android.intent.category.LAUNCHER" />
  20. </intent-filter>
  21. </activity>
  22. </application>
  23. </manifest>

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

[java] view plaincopy
  1. android:name="cn.com.qiang.helloworld.MainActivity</span>

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

[java] view plaincopy
  1. <intent-filter>
  2. <action android:name="android.intent.action.MAIN" />
  3. <category android:name="android.intent.category.LAUNCHER" />
  4. </intent-filter>

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

9. proguard-project.txt:

代码混淆相关文件

10.project.properties:

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

Android 项目在Eclipse中的目录结构相关推荐

  1. android circleimageview 导入到eclipse,android项目从Eclipse迁移到Android studio中常见问题解决方法.pdf...

    android项项目目从从Eclipse迁迁移移到到Android studio 中中常常见见问问题题解解决决方方法法 android项目从Eclipse迁移到Android studio中经常会遇到 ...

  2. iOS项目开发过程中的目录结构(转)

    iOS项目开发过程中的目录结构 我在这个目录结构方面真是吃了不少苦,开始总是觉得快点写快点写,后来发现只有快是不行的,在没有给整个项目的结构有一个清楚的认识和了解之前就匆匆动笔(敲代码啦)是非常冒失的 ...

  3. MAVEN 在eclipse中webapp目录下的文件不能同步到targer的问题

    MAVEN 在eclipse中webapp目录下的文件不能同步到targer的问题  mvn eclipse:eclipse 打开工程中的.classpath文件 检查是否有webapp的输出,如果没 ...

  4. SpringBoot项目在eclipse中能运行,部署到服务器 nohup java -jar 方式运行就无法显示报错

    SpringBoot项目在eclipse中能运行,部署到服务器 nohup java -jar 方式运行就无法显示报错: *************************** APPLICATION ...

  5. 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法

    title: 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法 tags: grammar_cjkRuby: true --- 右键单击项目,properties-- ...

  6. storm目录结构及在zk中的目录结构

    storm目录结构及在zk中的目录结构 @(STORM)[storm] storm目录结构及在zk中的目录结构 一storm在磁盘中的内容 一nimbus中的目录结构 1inbox目录 2stormd ...

  7. Linux 使用root用户登录系统,并查看当前的路径。 查看当前目录下面的所有文件(包括隐藏文件)。 在当前目录下,查看根目录中的目录结构。

    Linux一些命令 1.使用root用户登录系统,并查看当前的路径. 2.查看当前目录下面的所有文件(包括隐藏文件). 3.在当前目录下,查看根目录中的目录结构. List item 4.在当前/ro ...

  8. MyEclipse/Eclipse 导出带目录结构的.class

    MyEclipse/Eclipse 导出带目录结构的.class文件 1.打开Navigator视图 2.找到需要导出的.class文件 右键Export 3.选择General下的File Syst ...

  9. Maven项目在eclipse中使用junit进行单元测试时报错:ClassNotFoundException

    Maven项目在eclipse中使用junit进行单元测试时Coonsole出现以下错误: Class not found boco.ips.data.ice.orm.mapper.TestDemoM ...

最新文章

  1. OpenGL(glut)模拟太阳系:太阳,地球,月球,火星
  2. html的高度自适应,CSS布局自适应高度解决方法
  3. java 业务层业务接口层_Java web五层架构
  4. BAT 批处理命令 - 获取时间并进行自定义年月日、时分秒格式实例演示
  5. spring启动过程之源码跟踪(下)--spring Debug
  6. 《微机原理及接口技术》第03章在线测试
  7. NetBeans 7 Python 又回来了
  8. 一天学完spark的Scala基础语法教程七、数组(idea版本)
  9. AM335X 分配大于4M的framebuffer
  10. python爬取京东手机数据_实例解析Python如何实现爬取京东手机图片
  11. SQL Server 日志数据库清理办法
  12. 西安后宰门小学_【云端论坛】走向未来的墙中老校 ——后宰门小学“名校+”教育集团云论坛精彩绽放...
  13. Java使用Cipher类实现加密,包括DES,DES3,AES和RSA加密
  14. 计算机论文物业管理系统,小区物业管理系统的设计与实现(计算机毕业设计)...
  15. APP拉新的五种方法,找准目标用户,转为注册用户
  16. 网吧里电脑提示计算机内存不足,网吧电脑显示虚拟内存不足该怎么办呢
  17. 网络控制播放器(局域网内通过TCP和UDP控制视频播放器)
  18. 测试身体脂肪指数软件,判断肥胖的5个标准,体脂率测试的3个方法
  19. PDF如何修改,PDF怎么删除其中一页
  20. 华为stk_Aloo计算机在哪里,华为STK-AL00是什么型号

热门文章

  1. 3.1 采购管理规划
  2. 制作 Windows8   to Go
  3. 阿里巴巴指东打西,PC之后卖盒饭?
  4. twitter数据分析_Twitter上最受欢迎的数据科学文章主题
  5. 重学TCP协议(6) 四次挥手
  6. 初创公司股本结构_我如何向初创公司的开发团队添加一些结构-以及从过程中学到的东西
  7. 我的AWS开发人员考试未通过。 现在怎么办?
  8. sqlalchemy_SQLAlchemy使ETL变得异常简单
  9. reddit_我在3天内疯狂地审查了Reddit上的50个投资组合,从中学到了什么。
  10. linux中安装cx_Oracle