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~

更多相关文章

  1. 添加 C/C++ 代码
  2. Android之Android(安卓)Studio JNI
  3. Android(安卓)studio的NDK配置
  4. ubuntu14.04下搭建Android编译环境
  5. [Android(安卓)API学习]Data Storage胡乱翻译(1)
  6. Android(安卓)Studio启动崩溃的问题:Start Failed Internal error
  7. WebView:Android-H5交互
  8. android 通过占位符来动态获得字符串资源
  9. AndroidStudio开发flutter之环境配置

随机推荐

  1. Android中有趣的Demo
  2. Cocos2d-x教程(37)-Mac搭建Android开发环
  3. 一起学android之关于Intent的Flag属性的
  4. android ndk vfork 缺陷
  5. Android的Intent与Intent Filter使用
  6. Android WebView 安全性
  7. Android(安卓)短信 彩信 wap push的接收
  8. Android实现图片随意拖动、缩放
  9. android获取资源文件R.drawable中的图片
  10. 一起学android之给图片添加水印效果(33)