请选择 进入手机版 | 继续访问电脑版

[基础] 安卓项目目录结构文件详解资源文件构建文件说明作用

Android Android 8567 人阅读 | 0 人回复

对于安卓开发,了解学习开发时的目录结构,资源结构作用是必须的。

本文将详细介绍各个目录以及资源等文件的作用含义。

初始视图

新建的项目都会默认使用Andr oid 模式的项目结构,但这并不是项目真实的目录结构, 而是被Andr oid Studio 转换过的。

image.png

Project 视图

切换成Project ,这就是项目真实的目录结构

image.png

分析

一个项目,首先是需要有业务源代码,这是基础。

有了代码之后,必然有一个需要构建的过程,然后才能有运行的前提,android 使用的是Gradle 构建通常会有一些配置,还会必然有一些中间的临时结果文件;

通常我们都是借助于IDE进行开发的,比如IDEA、Android Studio,所以软件本身必然会生成一些项目相关的文件;

源代码通常是会在版本库上进行保存,所以通常也会有ignore文件,版本库的一些文件;

对于一个项目,还很有可能需要依赖一些外部的文件,比如第三方Jar,通常会有一个专门的目录保存;

对于安卓来说,很大程度上需要进行UI的开发,必然需要用到一些资源,比如图标图片;

对于项目开发,还必不可少的需要测试,所以还有测试相关文件和文件夹;

很显然,这些都是顺其自然就可以想得到的,下面对文件具体进行分析。

image.png

详细目录结构

image.png

顶层

.gradle(一般情况下不关注)

Android Studio 自动生成的文件,无须关心,也无需去手动编辑

.idea(一般情况下不关注)

Android Studio 自动生成的文件,无须关心,也无需去手动编辑

app $\color {red} {(必须关注)}$

项目中的代码、资源、测试代码等内容

build(一般情况下不关注)

在编译时自动生成的文件,无需过于关心

gradle(一般情况下不关注)

包含了gradle wrapper 的配置文件。 使用gradle wrapper 的方式不需要提前将gradle 下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。 默认就是启用gradle wrapper 方式的 如需修改,File→Settings→Build, Execution,Deployment→Build Tools→Gradle

.gitignore(一般情况下不关注)

版本控制 排除文件

build.gradle(一般情况下不关注)

项目全局的gradle 构建脚本 通常无需修改

gradle.properties(一般情况下不关注)

全局的gradle 配置文件,在这里配置的属性将会影响到项目中所有的gradle 编译脚本

gradlew(一般情况下不关注)

命令行界面中执行gradle 命令的,在Linux 或Mac 系统中使用的

gradlew .bat(一般情况下不关注)

命令行界面中执行gradle 命令的,在Windows 系统中使用

local.properties(一般情况下不关注)

用于指定本机中的Andr oid SDK 路径,通常内容是自动生成的,并不需要修改。 除非你本机中的Andr oid SDK 位置发生了变化,那么就将这个文件中的路径改成新的位置即可

settings.gradle(一般情况下不关注)

用于指定项目中所有引入的模块,通常情况下,模块的引入是自动的,几乎不需要手动修改

综上,可以看出,除了app 目录,其他的目录在绝大多数场景下都不需要关注


app目录

build

和外层的build 目录类似,包含了一些在编译时自动生成的文件,它的内容会更加复杂,不需要过多关心

libs

如果你的项目中使用到了第三方jar 包,就需要把这些jar 包都放在libs 目录下,放在这个目录下的jar 包会被自动添加到项目的构建路径里。

src.androidTest

编写Andr oid Test 测试用例

src.test

编写Unit Test 测试用例

src.main.java

放置所有Java 代码,即使你使用kotlin也是这个路径

src.main.res

项目中使用到的所有图片、布局、字符串等资源

图片放在drawable目录下,布局放在layout 目录下,字符串放在values 目录下

src.main.AndroidManifest.xml

整个Android 项目的配置文件

在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。

.gitignore

用于将app 模块内指定的目录或文件排除在版本控制之外

build.gradle

app 模块的gradle 构建脚本

文件中会指定很多项目构建相关的配置

proguard-rules.pro

指定项目代码的混淆规则

当代码开发完成后打包成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读

所以,日常开发时,经常使用的就是下面几个文件(目录)

  • 代码(src.main.java)
  • 资源(src.main.res)
  • 配置(AndroidManifest.xml)
  • 构建(build.gradle)

image.png

资源目录详解

展开资源文件夹如下:

主要路径就是drawable layout mipmap-xxx values xml

image.png

逻辑如下图所示

image.png

资源引用

image.png

上图是一个String 资源

有以下两种方式来引用它。

  1. 在代码中通过R.string.app_name可以获得该字符串的引用。
  2. 在XML中通过@string/app_name可以获得该字符串的引用。

观察可以发现分为四部分:

引用符号、变量类型、分割符、变量名称

代码中的引用符号是 R. 分割符是 . ,所以形式为R.类型.变量名

XML中的符号是 @ 分隔符是 /,所以形式为@类型/变量名

其实所有的资源,都是这种形式

资源中的类型,还有drawable mipmap layout

示例

打开AndroidManifest.xml

image.png

因为是在xml中,所以使用@类型,分隔符为/

构建

Android Studio 是采用Gradle 来构建项目的

Gradle 是一个非常先进的项目构建工具,它使用了一种基于Groovy 的领域特定语言( DSL)来进行项目设置

上面的目录分析时,其中有两个build.gradle 分别是最外层,以及app目录下。

此处简单提一下,后续专门记录关于构建的知识点,暂时只需要记住app下面的build.gradle 可以加载依赖即可

image.png

common_log.png 转载务必注明出处:程序员潇然,疯狂的字节X,https://crazybytex.com/thread-96-1-1.html

关注下面的标签,发现更多相似文章

文章被以下专栏收录:

    黄小斜学Java

    疯狂的字节X

  • 目前专注于分享Java领域干货,公众号同步更新。原创以及收集整理,把最好的留下。
    包括但不限于JVM、计算机科学、算法、数据库、分布式、Spring全家桶、微服务、高并发、Docker容器、ELK、大数据等相关知识,一起进步,一起成长。
热门推荐
海康摄像头接入 wvp-GB28181-pro平台测试验
[md]### 简介 开箱即用的28181协议视频平台 `https://github.c
[CXX1300] CMake '3.18.1' was not
[md][CXX1300] CMake '3.18.1' was not found in SDK, PATH, or
[若依]微服务springcloud版新建增添加一个
[md]若依框架是一个比较出名的后台管理系统,有多个不同版本。