这里写目录标题
1. Android 项目结构
1.1 Android 查看模式
Android 查看模式下,项目结构可分为App
和Gradle Scripts
两大类:
1.1.1 App类
manifests:
用于存放App的配置文件AndroidManifest.xml
java:
用于存放程序文件和测试用的程序文件res:
用于存放各类资源文件drawable:
存放图形文件anim:
存放动画文件layout:
存放布局文件menu:
存放菜单文件mipmap:
存放清晰显示的图形values:
存放其它数据
1.1.2 Gradle Scripts类
build.gradle:
config.gradle:
settings.gradle:
settings.gradle
编译优先级高于build.gradle
gradle.properties:
local.properties:
1.2 Project 查看模式
在 Android Studio 中,Android 模式下开发人员可快速找到需求文件
,但不能反映实际的项目文件目录结构,在项目窗格显示模式切换菜单中选择Project模式,可显示项目结构。
1.2.1 drawable文件讲解
观察Project结构可知,drawable存在多个目录。这在Android结构中是无法查看的
。各目录存储文件的规则是:
- drawable 用于存储drawable类的xml文件
- drawable-hdpi(高密度) 图片
- drawable-xhdpi(超高密度) 图片
- drawable-xxhdpi(超超高密度) 图片
注意:同一图片在上面几个目录中名字需要相同,这样才可以根据手机分辨率去适配不同分辨率的图片
, mipmap文件也是如此
1.2.2 各种资源文件/目录的创建
创建anim动画目录:
选中res目录 → \rightarrow → New → \rightarrow → Android Resource Directory → \rightarrow → Resource type: → \rightarrow →将类型改为anim
其他资源文件目录类似
anim:
选中该目录 → \rightarrow → New → \rightarrow →Animation Resource File或
选中res目录 → \rightarrow → New Android Resource File → \rightarrow →Resource type: → \rightarrow →将类型改为Animation
其他资源文件类似
2. Gradle 文件讲解
2.1 build.gradle
在Android项目中,build.gradle
文件通常分为两部分:
项目级别
的build.gradle
(通常位于项目的根目录)模块级别
的build.gradle
(位于每个模块的目录下)
2.1.1 各司其职
项目级别
的build.gradle文件通常用于定义所有子项目
或模块共用
的配置项,如:
- Gradle插件的版本、
- 仓库设置等。
模块级别
的build.gradle文件则针对具体的模块
进行配置,如:
- 编译选项、
- 依赖库、
- 签名配置
2.1.2 项目级别下的bulid.gradle配置
buildscript
:这部分定义了构建脚本所需的插件和依赖项。它通常包含:repositories
块,用于指定插件和依赖项的仓库来源,dependencies
块,用于列出构建脚本所需的Gradle插件。
allprojects
:这部分定义了所有模块(子项目)共享
的仓库和依赖项
配置。- 其他配置:
apply from: 'config.gradle'
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
// 其他仓库
}
dependencies {
classpath "com.android.tools.build:gradle:4.2.0"
// 其他构建脚本依赖项
}
}
allprojects {
repositories {
google()
mavenCentral()
jcenter() // Warning: this repository is going to shut down soon
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
2.1.3 模块级别下的bulid.gradle配置
-
应用插件(plugins ):
声明了应用于该模块的Gradle插件,通常是Android相关的插件。- 写法1
apply plugin: 'com.android.application' // 或者对于库模块 apply plugin: 'com.android.library'
- 写法2
plugins { id 'com.android.application' }
-
android :
这部分包含了Android特定的构建配置,如编译SDK版本、构建工具版本、默认配置、签名配置等。
android {
compileSdkVersion 34
buildToolsVersion "34.0.0"
defaultConfig {
applicationId "com.example.module_test"
minSdkVersion 30
targetSdkVersion 34
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
依赖项:
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
2.2 settings.gradle
- settings.gradle文件用于配置项目的设置,包括
- 模块和子项目的包含与排除
- 项目之间的依赖关系等
2.3 config.gradle
config.gradle
文件通常用于统一管理和配置项目的公共属性
,如
- 版本号
- 构建工具版本
- 依赖库版本等
当项目中有多个模块时,为了避免在每个模块的build.gradle文件中重复配置相同的属性,可以将这些公共配置提取到config.gradle文件中,然后在每个模块的build.gradle文件中引用它。
2.3.1 创建 config.gradle
创建config.gradle文件的一般步骤如下:
- 在项目的根目录下创建一个名为config.gradle的文件。
- 这个文件通常与
settings.gradle
和项目的根build.gradle
文件位于同一目录下。
- 这个文件通常与
- 在config.gradle文件中定义所需的配置项。例如,
- 你可以定义一个ext块来包含
版本号
、构建工具版本
等信息。
- 你可以定义一个ext块来包含
ext {
android = [
buildToolsVersion: '28.0.3',
supportVersion: '26.0.2',
minSdkVersion: 19,
compileSdkVersion: 23,
targetSdkVersion: 23,
applicationId: "com.example.myapp",
versionCode: 1,
versionName: "1.0",
// 其他配置项...
]
// 其他扩展属性...
dependencies = [
// 组件库
"xpopup" : "'com.lxj:xpopup:2.1.4'",
...
]
}
2.3.2 使用 config.gradle
第一步
- 在
项目的根build.gradle
文件(不是模块级别)的顶部,使用apply from:
语句来引入config.gradle文件。
apply from: 'config.gradle'
第二步
- 在模块的build.gradle文件中通过android或定义的扩展属性来引用模块所需的配置项
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
// 其他Android配置...
}
dependencies {
// xpopup库
api rootProject.ext.dependencies['xpopup']
// implementation rootProject.ext.dependencies['xpopup']
// 其他依赖项...
}
注意
- api:作用域用于指定一个依赖项不仅对该模块可见,而且还会被传递到使用该模块的其他模块中。
即,自己引用的库别的模块也可以用
- implementation:
仅引用该库(xpopup)的模块可以xpopup