Android 工程目录结构

Chengkai730 / 2024-10-05 / 原文

App工程分为两个层次,第一个层次是项目,另一个层次是模块.

模块依附于项目,每个项目至少有一个模块,也能拥有多个模块.

一般所言的“编译运行App”,指的是运行某个模块,而非运行某个项目,因为模块才对应实际的 App.

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

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

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

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

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

  • drawable目录存放图形描述文件与图片文件。

  • layout目录存放App页面的布局文件。

  • mipmap目录存放App的启动图标。

  • values目录存放一些常量定义文件,例如字符串常量strings.xml、像素常量dimens.xml、颜色常量colors.xml、样式风格定义styles.xml等。

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

(1)build.gradle,该文件分为项目级与模块级两种,用于描述App工程的编译规则。

(2)proguard-rules.pro,该文件用于描述Java代码的混淆规则。

(3)gradle.properties,该文件用于配置编译工程的命令行参数,一般无须改动。

(4)settings.gradle,该文件配置了需要编译哪些模块。初始内容为include ':app',表示只编译app模块。

(5)local.properties,项目的本地配置文件,它在工程编译时自动生成,用于描述开发者电脑的环境配置,包括SDK的本地路径、NDK的本地路径等。

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

APK 文件可以解压得到 class 文件. class 文件可以反编译看到源码.

gradle 在打包的时候, 要下载这些插件和库, 下面指定了从哪里去下载插件:

下面指定了从哪里去下载依赖:

有 NDK 的话, 也可以在此处配置.