对于安卓开发,了解学习开发时的目录结构,资源结构作用是必须的。
本文将详细介绍各个目录以及资源等文件的作用含义。
初始视图
新建的项目都会默认使用Andr oid 模式的项目结构,但这并不是项目真实的目录结构,
而是被Andr oid Studio 转换过的。
Project 视图
切换成Project ,这就是项目真实的目录结构
分析
一个项目,首先是需要有业务源代码,这是基础。
有了代码之后,必然有一个需要构建的过程,然后才能有运行的前提,android 使用的是Gradle
构建通常会有一些配置,还会必然有一些中间的临时结果文件;
通常我们都是借助于IDE进行开发的,比如IDEA、Android Studio,所以软件本身必然会生成一些项目相关的文件;
源代码通常是会在版本库上进行保存,所以通常也会有ignore文件,版本库的一些文件;
对于一个项目,还很有可能需要依赖一些外部的文件,比如第三方Jar,通常会有一个专门的目录保存;
对于安卓来说,很大程度上需要进行UI的开发,必然需要用到一些资源,比如图标图片;
对于项目开发,还必不可少的需要测试,所以还有测试相关文件和文件夹;
很显然,这些都是顺其自然就可以想得到的,下面对文件具体进行分析。
详细目录结构
顶层
.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)
资源目录详解
展开资源文件夹如下:
主要路径就是drawable
layout
mipmap-xxx
values
xml
逻辑如下图所示
资源引用
上图是一个String 资源
有以下两种方式来引用它。
- 在代码中通过R.string.app_name可以获得该字符串的引用。
- 在XML中通过@string/app_name可以获得该字符串的引用。
观察可以发现分为四部分:
引用符号、变量类型、分割符、变量名称
代码中的引用符号是 R.
分割符是 .
,所以形式为R.类型.变量名
XML中的符号是 @
分隔符是 /
,所以形式为@类型/变量名
其实所有的资源,都是这种形式
资源中的类型,还有drawable
mipmap
layout
示例
打开AndroidManifest.xml
因为是在xml中,所以使用@类型
,分隔符为/
构建
Android Studio 是采用Gradle 来构建项目的
Gradle 是一个非常先进的项目构建工具,它使用了一种基于Groovy 的领域特定语言( DSL)来进行项目设置
上面的目录分析时,其中有两个build.gradle
分别是最外层,以及app目录下。
此处简单提一下,后续专门记录关于构建的知识点,暂时只需要记住app下面的build.gradle
可以加载依赖即可
转载务必注明出处:程序员潇然,疯狂的字节X,https://crazybytex.com/thread-96-1-1.html