导读
最近想重新复习、整理下以前的笔记,也方便下刚学习Android的同学们或从eclipse转Android Studio的同志们,作以下文章提供学习0.0
看图以简析为准,有新增内容
Eclipse 项目结构:
Eclipse 项目结构图:
==注意:==
- 如果同学们发现有些目录没有,那是因为需要自己创建的
Eclipse 工程目录结构简析:
src:java源代码存放目录
gen:系统自动生成的文件目录
R.java 中记录了项目中各种资源ID
assets:资源文件目录,不会在R文件注册,文件会原封不动的保存到apk包中
libs 工程依赖库目录(jar包),会被添加到android depend 目录下
res:系统资源目录,所有文件都会在R文件生成资源ID
-
res/anim/ (自创建文件)
存放定义渐变动画的XML文件
res/animator/ (自创建文件)
- 存放定义属性动画的XML文件
-
drawable:存放应用程序的图片 (自创建文件)
- h high 高分辨率
- l low 低分辨率
- m middle 中间分辨率
- x 特大分辨率
- xx 超大分辨率
layout:界面布局目录
-
res/raw/ (自创建文件)
- 该目录用于存放应用使用到的原始文件,如音效文件等。编译软件时,这些数据不会被编译,不会在R文件注册,文件会原封不动的保存到apk包中(raw与assert调用方式不同)
- 要使用原始 InputStream 打开这些资源,请使用资源 ID(即 R.raw.filename)调用Resources.openRawResource()。
- 但是,如需访问原始文件名和文件层次结构,则可以考虑将某些资源保存在 assets/ 目录下(而不是 res/raw/)。assets/ 中的文件没有资源 ID,因此您只能使用 AssetManager 读取这些文件。
-
res/values/:专门存放应用使用到的各种类型数据目录。不同类型的数据存放在不同的文件中.
- strings.xml 定义字符串和数值
- arrays.xml 定义数组
- colors.xml定义颜色和颜色字串数值
- dimens.xml 定义尺寸数据
- styles.xml 定义样式。(可自定义一个新的.xml文件,专门放我们自定义的style)
- attrs.xml 自定义控件属性设计(自定义)
-
res/xml/ (自创建文件)
- 在Activity中使用getResources().getXML()读取该目录下的XML资源文件
- preference.xml PreferenceActivity或PreferenceActivity的布局文件
- 可以在运行时通过调用 Resources.getXML() 读取的任意 XML 文件。各种 XML 配置文件(如可搜索配置)都必须保存在此处。
-
AndroidManifest.xml:清单文件(程序入口文件),在软件安装的时候被读取
- Android中的四大组件(Activity、ContentProvider、BroadcastReceiver、Service)都需要在该文件中注册,程序所需的权限也需要在此文件中声明,例如:电话、短信、互联网、访问SD卡
proguard-project.txt: 项目混淆文件, 保护代码
project.properties:项目环境配置文件,读取该项目使用Android版本号.早期版本名为:default.properties
bin:二进制文件,包括class、资源文件、dex、apk等
proguard.cfg:用来混淆代码的配置文件,防止别人反编译
Android Studio 项目结构:
Android Studio 项目结构图:
==注意:==
- res目录,所有以drawable开头的文件夹用来放图片,以mipmap开头的放应用图标,以value开头的放字符串、样式、颜色等配置的,以layout开头的放布局文件
- 由于Android Studio 没有提供drawable-xxx,建议自己创建这些文件夹,一般都放在drawable-xxhdpi文件夹下即可
- .9图只能放在drawable目录下
Android Studio 工程目录结构简析:
├─.gradle 系统自动生成的gradle目录(不用关心)
├─.idea 系统自动生成的关于AS的环境配置目录.包括版权,字典,jar包信息,项目名称,编译信息等等
│ .gitignore git忽略文件列表
│ build.gradle 项目全局的Gradle构建脚本
│ gradle.properties 全局的Gradle配置文件,这里配置的属性会影响到项目中所有的gradle编译版本
│ gradlew 用于在命令行界面中执行gradle命令(只能在Linux或Mac中使用)
│ gradlew.bat 用于在命令行界面中执行gradle命令(只能在Windows中使用)
│ local.properties 本地属性文件,用于指定本地Android sdk路径
│ MyApplication.iml IntelliJ IDEA项目自动生成的文件.(不用关心)
│ settings.gradle 用于指定项目中所有引入的模块.(不用关心)
│
├─app moudle 目录,项目的代码,资源等内容都放这里
│ │ .gitignore git忽略文件列表
│ │ app.iml IntelliJ IDEA项目自动生成的文件(不用关心)
│ │ build.gradle 当前Module的Gradle编译文件
│ │ proguard-rules.pro proguard混淆文件
│ │
│ ├─build 系统自动生成的当前moudle的编译目录,相当于Eclipse中默认Java工程的bin目录.编译生成的apk在此目录
│ ├─libs jar依赖包存放目录
│ └─src java源代码存放目录
│ ├─androidTest 用于编写Android测试用例的
│ │ └─java
│ │ └─zs
│ │ └─xmx
│ │ └─myapplication
│ │ ApplicationTest.java
│ │
│ ├─test 用于编写Unit测试用例的
│ │
│ └─main 主目录(存放java文件,资源,清单文件)
│ │ AndroidManifest.xml 清单文件,用于给应用程序添加权限声明
│ │
│ ├─java java源码目录
│ │ └─zs
│ │ └─xmx
│ │ └─myapplication
│ │ MainActivity.java
│ │
│ └─res 资源文件目录
│ ├─drawable 图片资源.9图片只能放到drawable目录下,建议自己创建如下mipmap-xxx文件,一般都放在drawable-xxhdpi文件夹下即可
│ │
│ ├─layout 界面布局目录
│ │ activity_main.xml
│ │
│ ├─menu menu菜单xml文件
│ │ menu_main.xml
│ │
│ ├─mipmap-hdpi 高分辨率图标
│ │ ic_launcher.png
│ │
│ ├─mipmap-mdpi 中间分辨率图标
│ │ ic_launcher.png
│ │
│ ├─mipmap-xhdpi 特大分辨率图标
│ │ ic_launcher.png
│ │
│ ├─mipmap-xxhdpi 超大分辨率图标
│ │ ic_launcher.png
│ │
│ ├─values 专门存放应用使用到的各种类型数据目录。不同类型的数据存放在不同的文件中.
│ │ strings.xml 定义字符串和数值
│ │ arrays.xml 定义数组
│ │ colors.xml定义颜色和颜色字串数值
│ │ dimens.xml 定义尺寸数据
│ │ styles.xml 定义样式。
│ │ attrs.xml 自定义控件属性设计(自定义)
│ │
│ │
│ └─values-w820dp
│ dimens.xml
│
├─build 系统自动生成项目空间的编译目录
└─gradle gradle 目录,包含了gradle wrapper的配置文件
└─wrapper gradle wrapper可以看作是对gradle的封装,它可以使得在没有安装gradle的电脑上也可以使用Gradle进行构建.(不用关心)
gradle-wrapper.jar gradle 下载的jar包缓存,具体在 .gradle\caches\modules-2\files-2.1目录
gradle-wrapper.properties 声明了gradle的目录与下载路径以及当前项目使用的gradle版本
补充 : 需要自己建立的文件夹
main/assets/
main/aidl/
main/jni/ -->放置c代码
main/jniLibs/ -->放置so库
main/res/raw/-->放原始文件
main/res/anim/-->放渐变动画XML文件
main/res/animator/-->放属性动画XML文件
main/res/xml/ --> xml资源文件
可参照Eclipse结构简析
SDK工程目录结构:
SDK工程目录结构图:
SDK工程目录简析:
add-ons: 附加组件,放在一个额外的工具.google api,提供google地图的jar包
build-tools: 编译工具,谷歌sdk升级后采用的目录
docs: 文档目录.开发文档.
extras: 附加工具
support: 提供向下兼容的jar包.和额外的驱动,摄像头驱动,手机驱动
platform: 开发平台
platform tools: 开发的工具
sample: 实例代码
source: 源代码
system-image: 系统镜像
tools目录: 开发工具