Android项目结构

Android Studio(AS)中Android项目的文件结构有多种表现形式及视图,Android视图是AS的默认视图。Project视图是开发人员使用的视图。Android视图中会缺少很多文件,有些文件夹会被AS替换显示。Project视图中的文件结构就是项目此磁盘上的真实文件结构。

Android项目结构_第1张图片
视图

项目结构

Android项目结构_第2张图片
Android项目结构
  • .gradle目录与.idea目录AS自动生成的文件,无需手动编辑。

  • gradle Gradle类似PHP的Composer即依赖包存放目录

gradle目录下包含gradle wrapper的配置文件,使用gradle wrapper的方式无需提前将gradle下载会,它会根据本地缓存决定是否联网下载gradle

Android项目结构_第3张图片
Gradle

AS默认没有启用gradle wrapper的方式,打开方式为【导航栏】>【File】>【Settings】>【Build,Execution,Deployment】>【Gradle】中进行配置。

Android项目结构_第4张图片
联网下载Gradle
  • build.gradle文件是项目全局的Gradle构建脚本
$ vim build.gradle
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
    }
}
allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

repositories闭包中声明了jcenter()配置,jcenter是一个代码托管仓库 https://jcenter.bintray.com/,多数Android开源项目会选择将代码托管到jcenter上,声明后可在项目中引用任何jcenter上的开源项目。

dependencies闭包中使用classpath声明了Gradle插件,由于Gradle并非专门为构建Android项目而开发的,Java、C++等多种项目都可以使用Gradle来构建。如果需要使用Gradle构建项目则需要声明它的类文件路径。

  • gradle.properties文件是全局的Gradle配置文件,该文件配置的属性将会影响到项目中所有的Gradle编译脚本。
$ vim gradle.properties
systemProp.http.proxyHost=mirrors.neusoft.edu.cn
org.gradle.jvmargs=-Xmx1536m
systemProp.http.proxyPort=80
  • settings.gradle文件用于指定项目中所有引入的模块,如果项目中只有一个默认的app模块,则该文件只会引入app一个模块。通常模块的引入都是自动完成的。
  • gradlew是在Linux或Mac系统中用在命令行界面中执行Gradle命令所使用的
  • gradlew.bat文件是在Windows系统下在命令行界面中执行Gradle命令所使用的
  • xxx.iml文件是所有IntelliJ IDEA项目都会自动生成的问题及那,用于标识这是一个IntelliJ IDEA项目。
  • local.properties文件用于指定本机中的Android SDK路径,该文件是自动生成的。

项目应用模块目录app

app项目代码与资源存放目录,开发工作目录。

Android项目结构_第5张图片
app目录
  • build目录包含了在编译时自动生成的文件
  • libs项目中使用的第三方jar包,这些jar包会被自动添加到构建路径中。
  • .proguard-rules.pro文件用于指定项目代码的混淆规则
  • .build.gradle文件是app`模块中Gradle构建脚本
apply plugin: 'com.android.application'

apply plugin应用了一个插件,一般有两种可选值:'com.android.application'表示是一个应用程序模块, 'com.android.library'表示这是一个库模块。应用程序模块和库模块的区别在于应用程序模块可以直接运行,而库模块只能作为代码库依附于其它应用模块来运行。

android {
...
}

android闭包中可以配置项目构建的各种属性

  • compileSdkVersion 27用于指定项目的编译版本,这里的27表示使用Android对应版本系统的SDK进行编译。
  • buildToolsVersion '28.0.3'用于指定项目构建工具的版本

defaultConfig{...}闭包中可以对项目细节进行配置

  • applicationId 'com.zhiyi.onepay'用于执行项目的包名
  • minSdkVersion 19用于指定项目最低兼容的Android系统版本
  • targetSdkVersion 27表示在对应目标版本上已经做了充分的测试
  • versionCode 1304用于指定项目的版本号
  • versionName "1.3.4"用于指定项目的版本名

buildTypes {...}闭包用于指定生成安装文件的配置

  • release{...}闭包用于指定生成正式版安装文件的配置

  • debug{...}闭包用于指定生成测试版安装文件的配置

  • minifyEnabled false用于指定是否对项目代码进行混淆

  • proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'用于指定混淆时使用的规则文件。

proguard-andrid.txt文件是在Android SDK目录下对所有项目都通用的混淆规则。

proguard-rules.pro是在当前项目目录下,可以编写当前项目特有的混淆规则。

  • dependencies{...}闭包用于指定当前项目所有的依赖关系

AS项目共有三种依赖方式:本地依赖、库依赖、远程依赖

本地依赖可对本地的jar包或目录添加依赖关系

库依赖可以对项目中的库模块添加依赖关系

远程依赖可以对jcenter上开源项目添加依赖关系

源代码目录src

Android项目结构_第6张图片
src
  • java目录用于存放所有Java代码
  • res目录存放项目中所有使用到的图片、布局、字符串等资源。
    图片存放在drawable目录下,布局存放在layout目录下,字符串存放在vaues目录下。
    layout文件夹用于存放布局文件等,各个控件主要通过layout布局文件来提供显示效果。
    menu文件夹 用来存放菜单及其子菜单项
    mipmap文件夹用于存放图标文件
    values文件夹用于存放具体数值类文件,采用键值对形式存放。
  • AndroidManifest.xml文件是整个Android项目的配置文件,在程序中定义的四大组件都需要在这个文件中注册。

你可能感兴趣的:(Android项目结构)