Android Studio里项目的各目录与文件(一)

​  该系列主要分析Android Studio里各目录与文件及其作用,以及在工作中会遇到的坑与解决方法,特别是拉取项目到自己的AS里时,会遇到各种各样的问题,都是需要理解这些目录与文件是干什么,才能让你有思路可寻,然后去解决,不然只会百度或google来复制别人的答案来解决,只会不求甚解。

  今天先来说说这些目录与文件以及他们的作用。

  

  一、总项目的目录结构

我们使用Android Studio创建安卓项目成功后,就会出现以下这个文件结构:

 

1).idea(还有个.build)都是自动生成的文件,无需理会,无需手动编辑。

 

2)app,最重要的文件,里面放置的就是项目的代码文件和资源文件。(下文会详细讲它里面的文件)

 

3)build,编译时自动生成的文件,无需关心。

 

4)gradle,顾名思义,就是构建项目的gradle,为了使得构建你的app项目方便管理,使用gradle是最好的。而gradle文件里面包含gradlewrapper配置文件,使用gradle wrapper方式会自动联网下载gradle,,当然AndroidStudio会首先检查本地是否有缓存gradle,没有就会自动联网下载gradle,这样就不用自己先下载gradle,当然如果要使用离线模式,也可以自己setting:File---Settings---Build,Execution,Deployment---Gradle,如图所示:

 

5).gitignore文件,将指定的文件排除在版本控制之外。

 

6)build.gradle,项目全局的gradle构建脚本,也是重要的文件之一。

 

7)gradle.properties,全局的gradle配置文件,这里配置的属性能影响到项目所有的gradle编译脚本。

 

8)gradlew和gradlew.bat,用于在命令行界面下执行gradle命令,gradlew在linux和mac中执行,gradlew.bat则在windows下执行。

 

9)local.properties,本机中AndroidSDK的路径,一般自动生成,除非发生变化,则要修改。

 

10)XXX.iml,表示该项目是IntelliJIDEA项目。

 

11)setting.gradle,用于指定项目中所有引入的模块。一般可自动生成,也可自行设置,比如引入flutter模块时,可在此文件上设置该模块路径等。

 

二、app目录下的结构

app该目录是最重要的,因为它就是项目源码的所在地方,它的目录结构如下:

 

 

1)libs,如项目需用到第三方jar包(比如百度地图,极光推送等),则需要将这些jar包放到此目录下。

 

2)release,该目录并不是非得有,也可以在外面项目层路径下,它是存放你打包后的apk文件,你在打包的时候是可以设置它的路径的。

 

3)src,有三个目录,androidTest目录用来编写Android Test测试用例的,进行自动化测试用的。test目录则用来编写Unit Test测试用的,也是进行自动化测试用的。main目录中的java目录则是存放所有你的项目源代码,res目录则存放资源文件,资源文件是什么,就是你的布局文件,字符串文件,图片文件等,都放此目录,当然布局文件存放在layout目录,字符串文件等放在values目录,图标则放在mipmap目录下,图片则放在drawable目录下。最后,还有一个文件AndroidManifest.xml文件,它是注册四大组件的,还可以添加应用权限。

 

4).gitignore,将app中的文件和目录排除在版本控制之外。

 

5)app.iml,IntelliJIDEA自动生成的文件,不用关心。

 

6)build.gradle文件,app模块的gradle构建脚本,指定项目构建相关的配置。(非常重要,下文会详细讲解)

 

7)proguard-rules.pro,是混淆文件,指定项目代码的混淆规则,为了防止apk文件被别人破解时采取混淆代码。

 

三、最外层目录下的build.gradle文件和app目录下的build.gradle文件

 

1)最外层目录下的build.gradle文件,它的代码如图所示:

 

结构非常清晰,buildscript意思构建描述,repositories里声明的google()和jcenter()分别表示添加Google自己的官方扩展依赖库,还有一些第三方的开源库,声明了这两个库,那么项目中就可以轻松引用这些仓库中的依赖库了。Dependencies里声明的是Gradle插件,因为Gradle插件不仅仅为构建Android项目服务的,它还可以构建java项目和C++项目的,所以要声明Gradle插件是构建Android项目的,版本号跟Android Studio的版本号一致。allprojects里的声明同上,不解释了。

 

2)app目录下的build.gradle文件,里面的代码如下:

  代码虽多,结构也是很清晰的。第一行,apply是引用了com.android.application这个插件,代表它是一个应用程序模块,还可以apply另外一种模块,就是com.android.library模块,它表示库模块。两个模块的区别在于应用程序模块是可以直接运行,库模块是依附于应用程序模块的。

  接下来就是android闭包,compileSdkVersion,指定项目的编译版本,29是表示使用Android 10.0系统的SDK编译。buildToolsVersion,指定构建项目工具的版本。

  

  defaultConfig里的applicationId,指定项目的包名,包名是唯一性,是应用的唯一标识。minSdkVersion指定最低的兼容的Android系统版本,targetSdkVersion则指定目前使用到最高的Android系统版本。versionCode指定项目版本号,versionName则指定项目版本名。

 

  buildType里则是指定了项目生成安装文件的相关配置,其中可指定release和debug,debug表示生成的是测试版安装包,可以不写,而release则是指定正式版安装文件的,minifyEnabled表示是否使用混淆,而它的下一行则是设置使用的混淆文件。这里补充一点,凡是在Android Studio运行生成的都是测试版安装文件。正式版需Bild—Generate Signed Bundle/Apk里产生。

 

  dependencies闭包里则指定了项目所有的依赖关系:本地依赖,库依赖和远程依赖。

  

 本地依赖,对本地的jar包和目录添加依赖关系,implementationfileTree声明,将libs中的.jar文件都添加到构建目录中。

 

 远程依赖,对jcenter仓库的上的开源项目添加依赖关系,也就是平时我们在github上添加的第三方开源库,也是直接implementation,先检查本地是否有缓存,没有就直接联网下载到构建路径。

 

 库依赖,对项目中的库模块进行依赖,implementation project声明,通常格式为implementation project(‘:库名’)

   今天就分享到这里,之后会不定时更新此系列,下篇将讲解平时工作会遇到的问题,它们的解决方法分别与在这些目录与文件里的设置有关。

 

 

 

 

扫一扫  关注我的公众号

这里有你感兴趣的技术文与深度文

欢迎大家来投稿,分享你的文章!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值