第2章 环境搭建与依赖引入
本章从零搭建 Material 3 权限对话框组件的开发环境,覆盖 Android Studio 配置、material3 库依赖声明、最低 SDK 版本设置以及运行时权限声明。完成本章后,你将获得一个可编译运行的基线项目。
2.1 开发工具配置
本项目采用 Android Studio(推荐 Arctic Fox 2020.3.1 或更高版本)作为 IDE。确保以下组件已安装:
- Android SDK Platform 33+:用于编译 Material 3 组件。
- Kotlin 插件 1.8+:推荐使用 Kotlin 编写业务逻辑。
- Gradle 8.2+:与 AGP 8.x 配合确保依赖解析正确。
验证配置:在 Android Studio 菜单栏选择
File → Settings → Languages & Frameworks → Android SDK,确认 SDK Platforms 列表中包含 Android 13(API 33)或更高版本。
2.2 Material 3 库依赖声明
在项目级别的 build.gradle.kts(或 build.gradle)中,首先添加 Google 的 Material 依赖仓库(通常已默认存在):
// settings.gradle.kts
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
在 app 模块的 build.gradle.kts 中添加 Material 3 以及 Compose 相关依赖(本课程使用 Jetpack Compose 实现对话框):
// app/build.gradle.kts
dependencies {
implementation("androidx.compose.material3:material3:1.2.1")
implementation("androidx.compose.ui:ui:1.6.7")
implementation("androidx.compose.foundation:foundation:1.6.7")
implementation("androidx.activity:activity-compose:1.9.0")
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.0")
// 权限请求库 (Accompanist)
implementation("com.google.accompanist:accompanist-permissions:0.34.0")
}
版本一致性:Material 3 与 Compose 版本需相互兼容。建议使用 官方版本对应表 检查。若使用较新版本,请同步更新 Kotlin 和 AGP 版本。
2.3 MinSDK 与权限声明
2.3.1 最低 SDK 版本
Material 3 对话框(尤其是权限对话框)要求 minSdk = 21(Android 5.0)及以上。在 app/build.gradle.kts 中设置:
android {
compileSdk = 34
defaultConfig {
minSdk = 21
targetSdk = 34
}
}
2.3.2 AndroidManifest 权限声明
根据目标权限类型,在 AndroidManifest.xml 中声明运行时权限。例如,相机权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 其他权限 -->
</manifest>
关键说明:从 Android 11(API 30)起,部分权限(如
ACCESS_BACKGROUND_LOCATION)需在清单中同时声明前台权限和后台权限,否则运行时请求会静默失败。详情参考 官方权限指南。
2.4 环境搭建流程总览
下图概括了从 IDE 配置到运行时权限声明的完整链路:
2.5 常见错误与调试
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
Cannot resolve symbol 'material3' |
仓库未添加或依赖版本拼写错误 | 检查 settings.gradle.kts 中是否包含 google() 仓库,并确认依赖 artifact 名称正确 |
minSdk (1) cannot be less than 21 |
误将 minSdk 设为低于 21 |
将 minSdk 改为 21 或更高 |
INSTALL_FAILED_MISSING_PERMISSION |
清单中未声明运行时权限 | 在 AndroidManifest.xml 中使用 <uses-permission> 添加对应权限 |
调试建议:首次编译时在终端执行
./gradlew app:dependencies --configuration releaseRuntimeClasspath,检查引用的 Material 3 版本是否与 Compose 兼容。
2.6 性能与稳定性考量
- 延迟初始化:权限对话框应在用户交互时触发,避免在 Activity 的
onCreate中直接请求,防止 ANR。 - 依赖精简:仅引入本课程所需的最小依赖集(material3、ui、foundation、activity-compose),避免使用过大的第三方权限库。
- 清单冗余清理:移除不需要的
<uses-permission>声明,降低应用被审核的风险。
至此,环境搭建与依赖引入工作全部完成。下一阶段将进入对话框组件的核心架构与布局设计。