Android 的项目组织结构
打开AS,让我们来理清 Hello World 程序的文件组织结构:
这是AS利用项目构建工具 Gradle(以后会专门分析一下)组织的项目文件结构,默认是以 Android 的方式(谷歌官方推荐的文件结构)展现的,其右边的三角形按钮点开后还有 Project、Packages、Scratches、ProjectFiles、Problems 等组织方式,用得最多的是 Project 和 Android,两者的区别在于:Project 会列出该项目的所有文件,而 Android 只会列出与项目紧密相关的主要文件,为了以后更好地掌握 Android 文件结构,我建议切换成 Project(类似于 eclipse 的目录结构) ,如图:
这里是第一部分的截图,不要被吓到咯,我们从上往下开始分析一些主要的文件(现阶段我们主要关注的目录会加粗显示):
-
Hello World:这其实一个工作空间(Project),在这里面我们还可以新建多个项目(Module)。
-
.gradle:Gradle编译系统,版本由wrapper指定。
-
.idea:系统自动生成的 Android Studio IDE 所需要的文件,包括版权、字典、jar 包信息、项目名称和编译信息等等。
-
app:指的就是一个Module,存放着与应用相关的文件。
-
app | build:编译后产生的项目相关文件,在 build | output | apk 里面有个
app-debug.apk
可以拷贝然后安装到手机上。 -
app | libs:依赖的库所在的位置(jar和aar),为项目需要添加的.jar 包或.so 包等外接库。
-
app | src:是该项目源代码存放目录, src | androidTest 为系统自动生成的用于测试的目录。
-
src | main:里面是主要的项目目录和代码。
-
src | main | java:放着创建应用时创建的包,包里面存放着所有 java 代码,现在只有一个活动类
HelloWorldActivity.java
。 -
main | res:里面存放着工程的资源文件。其中 drawable 和 mipmap(纹理映射技术) 的区别在于,把图片放到 mipmap 可以提高系统渲染图片的速度和图片质量,主要是对图片缩放(scale)进行优化,减少GPU压力。但是谷歌建议大家只把 app 启动图标(
ic_launcher.png
)放在对应的mipmap 里面,而PNG、JPEG、GIF、XML、点九图等图片格式还是全部放在 drawable 文件里。res目录下所有的资源文件都会在 R.Java 文件下生成对应的资源 id,我们可以直接通过资源 id 访问到对应的资源;这个 R 文件可以理解为字典,res 下每个资源都都会在这里生成一个唯一的 id! -
res | layout :存放着布局文件(
hello_world_layout.xml
)。 -
res | values:
-
colors.xml
:定义各种颜色的文件。 -
dimens.xml
: 定义应用程序要使用的尺寸资源,以达到复用的目的,通过dimens资源文件可以方便地实现屏幕适配。 -
strings.xml
:定义程序中窗体显示的文本值。 -
styles.xml
:定义程序风格样式。 -
arrays.xml
:定义数组资源。(图中未出现) -
attrs.xml
:自定义控件时用的较多,自定义控件的属性(图中未出现)。
-
- app | values-w820dp:规定设备的可用宽度至少要达到 820dp 才可以引用
dimens.xml
中的尺寸资源值。 -
AndroidManifest.xml
:这是你整个 Android 项目的配置文件。 - app | test:为单元测试代码存放目录。
- app |
.gitignore
:当前项目在上传到 Git 的时候忽略的文件。后面同名的是项目工作空间的,以此类推。 - app |
app.iml
:app模块的配置文件(.iml 是Intellij 的模块文件,而AS是基于Intellij 的,所以会用到它)。 - app |
build.gradle
:设置了模块的 gradle 构建配置。(全局的build.gradle
主要是声明仓库源,gradle 的版本号说明等) - app |
proguard-rules.pro
:就是用户自定义添加代码混淆规则的文件。代码混淆就是将类名、方法名、Field 名变成如 a、b、c 或者 1、2、3 等难以阅读和理解的名字,以防止你的 app 被逆向工程和被反编译阅读源码。sdk | tools | proguard |proguard-android.txt
是谷歌默认的代码混淆规则文件,如果要启用代码混淆,在 app | gradle 的buildTypes
里,将minifyEnable false
变成minifyEnable true
。
让我们接着看后面的文件:
-
build:代码编译后系统生成的项目空间文件存放的位置。
-
gradle:gradle目录,wrapper 的 jar 和配置文件所在的位置。
-
projectFilesBackup:项目工作空间备份文件。
-
setting.gradle
:这个文件是全局的项目配置文件,里面主要声明一些需要加入 gradle 的 module。 -
local.properties
:设置 key ,SDK&JDK&NDK 的路径配置通过 File | Project Structure 更改。 -
gradlew & gradlew.bat
:自动完成 gradle 环境的脚本,在 linux 和OS X 下直接运行 gradlew 会自动完成 gradle 环境的搭建。 -
External Libraries: 项目依赖的外部库, 编译时系统自动下载的。
下一节我们来熟悉一下AS 的其他区域。
Fin~
网友评论