Android 项目的工程目录结构——学习笔记

project结构

即真实的文件目录结构

Android 文件结构

App工程分为两个层次,第一个层次是项目,另一个层次是模块。模块依附于项目,每个项目至少有一个模块,也能拥有多个模块。“编译运行App”,指的是运行某个模块,而非运行某个项目,因为模块才对应实际的App。

App项目下面有两个分类:app(代表app模块)、Gradle Scripts

app下面有3个子目录,Gradle Scripts下面主要是工程的编译配置文件

app文件夹

(1)manifests子目录,下面只有一个XML文件,即AndroidManifest.xml,它是App的运行配置文件。

(2)java子目录,下面有3个com.example.myapp包,其中第一个包存放当前模块的java源代码,后面两个包存放测试用的java代码。

(3)res子目录,存放当前模块的资源文件。res下面又有4个子目录:

  • drawable目录存放图形描述文件与图片文件。
  • layout目录存放App页面的布局文件。
  • mipmap目录存放App的启动图标。
  • values目录存放一些常量定义文件,例如字符串常量strings.xml、像索常量dimens.xml、颜色常量colors.xm)、样式风格定义styles.xml等。

Gradle Scripts

Gradle 是一个项目自动化构建工具,帮我们做了依赖、打包、部署、发布、各种渠道的差异管理等工作。

Gradle Scripts主要是工程的编译配置文件,主要有:

  1. build.gradle,该文件分为项目级与模块级两种,用于描述App工程的编译规则。
  2. proguard-rules.pro,该文件用于描述java代码的混淆规则。
  3. gradle.properties,该文件用于配置编译工程的命令行参数,一般无须改动
  4. settings.grade,该文件配置了需要编译哪些模块。初始内容为include':app',表示只编译app模块。
  5. local.properties,项目的本地配置文件,它在工程编译时自动生成,用于描述开发者电脑的环境配置,包括SDK的本地路径、NDK的本地路径等。

project 级别的buildradle:

指定了当前项目的总体编译规则,打开该文件在buildscript下面找到repositories和dependencies两个节点,其中repositories节点用于设置Android studio插件的网络仓库地址,而dependencies节点用于设置gradle插件的版本号。由于官方的谷歌仓库位于国外,下载速度相对较慢,因此可在repositories节点添加阿里云的仓库地址,方便国内开发者下载相关插件。

repositories{}闭包:配置远程仓库

该闭包中声明了jcenter()和google()的配置,其中jcenter是一个代码托管仓库,上面托管了很多Android开源项目,在这里配置了jcenter后我们可以在项目中方便引用jcenter上的开源项目,从Android Studio3.0后新增了google()配置,可以引用google上的开源项目。

dependencies{}闭包:配置构建工具

该闭包使用classpath声明了一个Gradle插件,由于Gradle并不只是用来构建Android项目,因此此处引入相关插件来构建Android项目,其中’3.3.3’为该插件的版本号,可以根据最新的版本号来调整。

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {//这里是gradle脚本执行所需依赖,分别是对应的maven库和插件
 
 repositories {
 google()//从Android Studio3.0后新增了google()配置,可以引用google上的开源项目
 jcenter()//是一个类似于github的代码托管仓库,声明了jcenter()配置,可以轻松引用 jcenter上的开源项目
 }
 dependencies {
 classpath 'com.android.tools.build:gradle:3.0.0'此处是android的插件gradle,gradle是一个强大的项目构建工具
 

 // NOTE: Do not place your application dependencies here; they belong
 // in the individual module build.gradle files
 }
}

allprojects {//这里是项目本身需要的依赖,比如项目所需的maven库
 repositories {
 google()
 jcenter()
 }
}

// 运行gradle clean时,执行此处定义的task任务。
// 该任务继承自Delete,删除根目录中的build目录。
// 相当于执行Delete.delete(rootProject.buildDir)。
// gradle使用groovy语言,调用method时可以不用加()。
task clean(type: Delete) {
 delete rootProject.buildDir
}

moudle级别的bulidgradle:

模块级别的 build.gradle 对应于具体模块,每个模块都有自己的 build.gradle,它指定了当前模块的详细编译规则。

  1. plugins:引入插件

  2. android:包含了配置 Android 构建的所有信息,比如编译 SDK 版本、应用 ID、版本号、签名配置等。

  3. dependencies:用于声明该模块所依赖的其他库和模块。可以包括编译时依赖、运行时依赖、测试依赖等。

plugin块:

表示应用了插件,另一种较早的一种声明方式,也是一种比较常见的方式:

apply plugin: 'com.android.application'

android:

1、添加signingConfigs{}闭包:

2、compileSdkVersion:设置编译时用的Android版本

3、buildToolsVersion:设置编译时使用的构建工具的版本,Android Studio3.0后去除此项配置

4、defaultConfig{}闭包:

  • applicationId:指定了项目的包名。
  • minSdk:指定项目最低兼容的版本,如果设备小于这个版本或者大于maxSdkVersion(一般不用)将无法安装这个应用,这里指定为16,表示最低兼容到Android 4.1系统。
  • targetSdk:指定项目的目标版本,表示在该目标版本上已经做过充分测试,系统会为该应用启动一些对应该目标系统的最新功能特性,Android系统平台的行为变更,只有targetSdk的属性值被设置为大于或等于该系统平台的API版本时,才会生效。
  • versionCode:表示版本号,一般每次打包上线时该值只能增加,打包后看不见。
  • versionName:表示版本名称,展示在应用市场上。
  • testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner”表明要使用AndroidJUnitRunner进行单元测试。

5、 buildTypes{}闭包:

这个闭包主要指定生成安装文件的主要配置,一般包含两个子闭包,一个是debug闭包,用于指定生成测试版安装文件的配置,可以忽略不写;另一个是release闭包,用于指定生成正式版安装文件的配置。

6、sourceSets{}闭包:配置目录指向

7、packagingOptions{}闭包:打包时的相关配置

8、productFlavors{}闭包:多个渠道配置

9、lintOptions{}闭包:代码扫描分析

Androidmanifest.xml

史上最全的Android build.gradle配置教程-腾讯云开发者社区-腾讯云 (tencent.com)

12-编译配置文件 build.gradle_哔哩哔哩_bilibili

【Android从零单排系列三】《认识一下Android项目结构》-腾讯云开发者社区-腾讯云 (tencent.com)

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值