第02章 VS Code开发环境深度配置¶
学习目标:全面掌握VS Code作为Android开发环境的配置方法,建立高效的开发工作流。
预计学习时间:1-2天 实践时间:1天
目录¶
1. 环境准备与前提条件¶
1.1 系统要求¶
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Windows 10 / macOS 10.15 / Ubuntu 18.04 | Windows 11 / macOS 13+ / Ubuntu 22.04 |
| 内存 | 8 GB | 16 GB+ |
| 存储 | 10 GB 可用空间 | 50 GB+ SSD |
| JDK | JDK 17 | JDK 17 LTS |
| Android SDK | API 21+ | API 35+ |
1.2 必要组件安装¶
1.2.1 JDK安装¶
# 验证JDK安装
java -version
javac -version
# 输出示例
openjdk version "17.0.8" 2023-07-18
OpenJDK Runtime Environment (build 17.0.8+7)
OpenJDK 64-Bit Server VM (build 17.0.8+7, mixed mode)
Windows安装步骤: 1. 下载 Eclipse Temurin JDK 17 2. 运行安装程序 3. 设置环境变量:
# 设置JAVA_HOME
[Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Eclipse Adoptium\jdk-17", "User")
# 添加到PATH
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "$currentPath;%JAVA_HOME%\bin", "User")
1.2.2 Android SDK安装¶
方式一:通过Android Studio安装(推荐)
# 1. 下载Android Studio
# https://developer.android.com/studio
# 2. 安装时选择Standard安装
# 3. 记录SDK路径,通常为:
# Windows: C:\Users\<用户名>\AppData\Local\Android\Sdk
# macOS: ~/Library/Android/sdk
# Linux: ~/Android/Sdk
方式二:命令行安装(轻量级)
# 下载命令行工具
mkdir -p ~/android-sdk/cmdline-tools
cd ~/android-sdk/cmdline-tools
wget https://dl.google.com/android/repository/commandlinetools-win-9477386_latest.zip
unzip commandlinetools-win-9477386_latest.zip
mv cmdline-tools latest
# 设置环境变量
export ANDROID_HOME=$HOME/android-sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
# 安装必要组件
sdkmanager "platform-tools" "platforms;android-35" "build-tools;35.0.0"
1.3 环境变量配置¶
Windows (PowerShell):
# 设置Android SDK环境变量
[Environment]::SetEnvironmentVariable("ANDROID_HOME", "$env:USERPROFILE\AppData\Local\Android\Sdk", "User")
# 添加到PATH
$path = [Environment]::GetEnvironmentVariable("Path", "User")
$newPaths = @(
"$env:ANDROID_HOME\platform-tools",
"$env:ANDROID_HOME\cmdline-tools\latest\bin"
)
[Environment]::SetEnvironmentVariable("Path", "$path;$($newPaths -join ';')", "User")
验证安装:
# 验证adb
adb version
# 验证sdkmanager
sdkmanager --list
# 输出示例
Android Debug Bridge version 1.0.41
Version 34.0.4-10161052
2. VS Code扩展安装与配置¶
2.1 必备扩展列表¶
| 扩展 | 功能 | 安装命令 |
|---|---|---|
| Kotlin Language | Kotlin语言支持 | code --install-extension fwcd.kotlin |
| Android Extension Pack | Android开发工具集 | code --install-extension adelphes.android-dev-ext |
| Gradle for Java | Gradle构建支持 | code --install-extension vscjava.vscode-gradle |
| XML Tools | XML格式化与验证 | code --install-extension DotJoshJohnson.xml |
| GitLens | 增强Git功能 | code --install-extension eamodio.gitlens |
| Error Lens | 实时错误显示 | code --install-extension usernamehw.errorlens |
| Material Icon Theme | 文件图标主题 | code --install-extension PKief.material-icon-theme |
2.2 一键安装脚本¶
Windows (PowerShell):
# 必备扩展
$extensions = @(
"fwcd.kotlin", # Kotlin语言支持
"adelphes.android-dev-ext", # Android开发扩展
"vscjava.vscode-gradle", # Gradle支持
"DotJoshJohnson.xml", # XML工具
"eamodio.gitlens", # Git增强
"usernamehw.errorlens", # 错误提示
"PKief.material-icon-theme", # 图标主题
"zhuangtongfa.material-theme", # Material主题
"streetsidesoftware.code-spell-checker", # 拼写检查
"aaron-bond.better-comments" # 注释增强
)
foreach ($ext in $extensions) {
Write-Host "Installing $ext..." -ForegroundColor Green
code --install-extension $ext
}
Write-Host "All extensions installed!" -ForegroundColor Cyan
2.3 Kotlin扩展深度配置¶
settings.json配置:
{
"kotlin.languageServer.enabled": true,
"kotlin.debugAdapter.enabled": true,
"kotlin.compiler.jvm.target": "17",
"kotlin.imports.autoImport": true,
"kotlin.formatting.enabled": true,
"kotlin.linting.enabled": true,
"kotlin.codeStyle": "official",
"kotlin.trace.server": "verbose",
// 代码补全
"kotlin.completion.snippets.enabled": true,
"kotlin.completion.imports.enabled": true,
// 诊断
"kotlin.diagnostics.enabled": true,
"kotlin.diagnostics.level": "hint"
}
2.4 Android扩展配置¶
{
"android.sdkLocation": "C:\\Users\\<用户名>\\AppData\\Local\\Android\\Sdk",
"android.emulator.port": 5554,
"android.logcat.maxLines": 5000,
"android.adb.port": 5037,
// 自动同步
"android.autoSync": true,
"android.autoSyncDelay": 1000,
// 代码生成
"android.generateLayoutParams": true,
"android.generateViewBinding": true
}
3. Android SDK配置¶
3.1 SDK组件安装¶
# 查看可用组件
sdkmanager --list
# 安装核心组件
sdkmanager "platform-tools"
sdkmanager "platforms;android-35"
sdkmanager "platforms;android-33"
sdkmanager "build-tools;34.0.0"
sdkmanager "build-tools;33.0.2"
# 安装模拟器
sdkmanager "emulator"
sdkmanager "system-images;android-34;google_apis;x86_64"
# 安装额外工具
sdkmanager "extras;google;google_play_services"
sdkmanager "extras;android;m2repository"
3.2 创建虚拟设备¶
# 列出可用设备
avdmanager list device
# 创建AVD
avdmanager create avd -n Pixel_7_API_34 -k "system-images;android-34;google_apis;x86_64" -d "pixel_7"
# 启动模拟器
emulator -avd Pixel_7_API_34 -gpu swiftshader_indirect
# 常用启动参数
emulator -avd Pixel_7_API_34 \
-gpu swiftshader_indirect \ # 软件渲染
-no-snapshot-load \ # 不加载快照
-no-audio \ # 禁用音频
-memory 4096 \ # 分配4GB内存
-cores 4 # 使用4核
3.3 SDK路径配置检查表¶
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| ANDROID_HOME | echo $ANDROID_HOME | 显示SDK路径 |
| ADB | adb version | 显示版本号 |
| SDK Manager | sdkmanager --version | 显示版本号 |
| Emulator | emulator -list-avds | 显示AVD列表 |
| Platform Tools | ls $ANDROID_HOME/platform-tools | 显示工具列表 |
4. 项目初始化与配置¶
4.1 创建新项目¶
方式一:使用Android Studio模板后迁移
方式二:命令行创建
# 创建项目目录
mkdir MyComposeApp
cd MyComposeApp
# 创建基本目录结构
mkdir -p app/src/main/java/com/example/mycomposeapp
mkdir -p app/src/main/res/values
mkdir -p app/src/main/res/drawable
mkdir -p gradle/wrapper
4.2 核心配置文件¶
build.gradle.kts (Project)¶
// Top-level build file
plugins {
id("com.android.application") version "8.5.2" apply false
id("com.android.library") version "8.5.2" apply false
id("org.jetbrains.kotlin.android") version "2.0.21" apply false
id("org.jetbrains.kotlin.plugin.compose") version "2.0.21" apply false
id("com.google.dagger.hilt.android") version "2.51.1" apply false
id("com.google.devtools.ksp") version "2.0.21-1.0.25" apply false
}
build.gradle.kts (App Module)¶
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("org.jetbrains.kotlin.plugin.compose")
id("com.google.dagger.hilt.android")
id("com.google.devtools.ksp")
kotlin("plugin.serialization") version "2.0.21"
}
android {
namespace = "com.example.mycomposeapp"
compileSdk = 35
defaultConfig {
applicationId = "com.example.mycomposeapp"
minSdk = 24
targetSdk = 35
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary = true
}
}
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
debug {
isMinifyEnabled = false
applicationIdSuffix = ".debug"
isDebuggable = true
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
buildFeatures {
compose = true
buildConfig = true
}
// Kotlin 2.0+ 使用 Compose Compiler Gradle 插件,无需 composeOptions 配置
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
}
dependencies {
// Core
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
implementation("androidx.activity:activity-compose:1.8.1")
// Compose BOM
val composeBom = platform("androidx.compose:compose-bom:2024.10.01")
implementation(composeBom)
androidTestImplementation(composeBom)
// Compose UI
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.ui:ui-graphics")
implementation("androidx.compose.ui:ui-tooling-preview")
implementation("androidx.compose.material3:material3")
// Navigation
implementation("androidx.navigation:navigation-compose:2.7.5")
// ViewModel
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2")
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.6.2")
// Hilt
implementation("com.google.dagger:hilt-android:2.51.1")
ksp("com.google.dagger:hilt-compiler:2.51.1")
implementation("androidx.hilt:hilt-navigation-compose:1.1.0")
// Network
implementation("com.squareup.retrofit2:retrofit:2.11.0")
implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
// Image Loading
implementation("io.coil-kt:coil-compose:2.7.0")
// Room
implementation("androidx.room:room-runtime:2.8.4")
implementation("androidx.room:room-ktx:2.8.4")
ksp("androidx.room:room-compiler:2.8.4")
// DataStore
implementation("androidx.datastore:datastore-preferences:1.0.0")
// Testing
testImplementation("junit:junit:4.13.2")
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3")
testImplementation("io.mockk:mockk:1.13.8")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
// Debug
debugImplementation("androidx.compose.ui:ui-tooling")
debugImplementation("androidx.compose.ui:ui-test-manifest")
}
gradle.properties¶
# Project-wide Gradle settings
org.gradle.jvmargs=-Xmx8192m -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.configureondemand=true
kotlin.code.style=official
android.useAndroidX=true
kotlin.incremental=true
kotlin.incremental.android=true
4.3 VS Code工作区配置¶
.vscode/settings.json:
{
// 文件关联
"files.associations": {
"*.gradle": "groovy",
"*.gradle.kts": "kotlin"
},
// 排除文件
"files.exclude": {
"**/.gradle": true,
"**/build": true,
"**/.idea": true,
"**/*.iml": true,
"**/local.properties": true,
"**/.DS_Store": true
},
// 搜索排除
"search.exclude": {
"**/build": true,
"**/.gradle": true
},
// Kotlin配置
"kotlin.languageServer.enabled": true,
"kotlin.debugAdapter.enabled": true,
"kotlin.compiler.jvm.target": "17",
// 编辑器配置
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
},
// Gradle配置
"java.configuration.updateBuildConfiguration": "automatic",
"java.compile.nullAnalysis.mode": "automatic",
// 终端配置
"terminal.integrated.defaultProfile.windows": "PowerShell",
"terminal.integrated.profiles.windows": {
"Gradle": {
"path": "powershell",
"args": ["-NoExit", "-Command", "./gradlew"]
}
}
}
5. 调试配置详解¶
5.1 启动配置¶
.vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "android",
"request": "launch",
"name": "Launch App",
"appSrcRoot": "${workspaceFolder}/app/src/main",
"apkFile": "${workspaceFolder}/app/build/outputs/apk/debug/app-debug.apk",
"adbPort": 5037
},
{
"type": "kotlin",
"request": "attach",
"name": "Attach to Debugger",
"projectRoot": "${workspaceFolder}",
"hostName": "localhost",
"port": 5005,
"timeout": 30000
},
{
"type": "android",
"request": "launch",
"name": "Launch with Profiler",
"appSrcRoot": "${workspaceFolder}/app/src/main",
"apkFile": "${workspaceFolder}/app/build/outputs/apk/debug/app-debug.apk",
"preLaunchTask": "gradle: assembleDebug",
"postDebugTask": "open-profiler"
}
]
}
5.2 任务配置¶
.vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "gradle: build",
"type": "shell",
"command": "./gradlew",
"args": ["build"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
},
"problemMatcher": ["$gradle"]
},
{
"label": "gradle: assembleDebug",
"type": "shell",
"command": "./gradlew",
"args": ["assembleDebug"],
"group": "build",
"problemMatcher": ["$gradle"]
},
{
"label": "gradle: clean",
"type": "shell",
"command": "./gradlew",
"args": ["clean"],
"group": "build"
},
{
"label": "gradle: test",
"type": "shell",
"command": "./gradlew",
"args": ["test"],
"group": "test"
},
{
"label": "gradle: connectedCheck",
"type": "shell",
"command": "./gradlew",
"args": ["connectedCheck"],
"group": "test"
},
{
"label": "install-debug",
"type": "shell",
"command": "adb",
"args": [
"install",
"-r",
"${workspaceFolder}/app/build/outputs/apk/debug/app-debug.apk"
],
"dependsOn": "gradle: assembleDebug"
},
{
"label": "open-profiler",
"type": "shell",
"command": "echo",
"args": ["Open Android Studio Profiler manually"]
}
]
}
5.3 断点调试技巧¶
条件断点¶
// 在循环中设置条件断点
for (i in 0 until items.size) {
// 断点条件: i == 5 && items[i].isImportant
processItem(items[i])
}
日志断点¶
在VS Code中: 1. 右键点击行号 2. 选择"Add Conditional Breakpoint" 3. 输入日志表达式:{ "User clicked", userId }
异常断点¶
// .vscode/launch.json 中添加
{
"type": "kotlin",
"request": "launch",
"name": "Debug with Exception Breakpoints",
"exceptionBreakpoint": {
"uncaught": true,
"caught": false
}
}
6. 模拟器与真机调试¶
6.1 模拟器管理¶
# 列出所有AVD
emulator -list-avds
# 启动特定AVD
emulator -avd Pixel_7_API_34
# 冷启动(不加载快照)
emulator -avd Pixel_7_API_34 -no-snapshot-load
# 擦除数据并启动
emulator -avd Pixel_7_API_34 -wipe-data
# 查看运行中的模拟器
adb devices
# 连接特定模拟器
adb -s emulator-5554 shell
6.2 真机调试配置¶
启用开发者选项¶
- 打开手机"设置"
- 找到"关于手机"
- 连续点击"版本号"7次
- 返回设置,进入"开发者选项"
- 启用"USB调试"
连接与授权¶
# 连接设备后查看
adb devices
# 输出示例
List of devices attached
ABC123DEF456 device
emulator-5554 device
# 如果显示unauthorized,需要在手机上授权
# 重新授权
adb kill-server
adb start-server
adb devices
无线调试(Android 11+)¶
# 1. 通过USB连接后,启用无线调试
adb tcpip 5555
# 2. 查看设备IP地址
adb shell ip addr show wlan0
# 3. 无线连接
adb connect 192.168.1.100:5555
# 4. 断开USB,验证连接
adb devices
# 5. 断开无线连接
adb disconnect 192.168.1.100:5555
6.3 日志查看¶
# 查看所有日志
adb logcat
# 过滤特定TAG
adb logcat -s "MyApp:D"
# 过滤特定级别
adb logcat *:E # 仅错误
# 清空日志
adb logcat -c
# 保存到文件
adb logcat -d > log.txt
# 彩色输出
adb logcat -v color
# 格式化输出
adb logcat -v threadtime
VS Code集成:
安装 "Android Logcat" 扩展,或使用终端任务:
// tasks.json
{
"label": "logcat",
"type": "shell",
"command": "adb",
"args": ["logcat", "-s", "${input:logTag}:D"],
"problemMatcher": []
}
7. 构建流程优化¶
7.1 Gradle优化配置¶
gradle.properties¶
# JVM参数
org.gradle.jvmargs=-Xmx8192m -XX:+UseParallelGC -XX:MaxMetaspaceSize=512m
# 并行构建
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.configureondemand=true
# Kotlin优化
kotlin.incremental=true
kotlin.incremental.android=true
kotlin.caching.enabled=true
kotlin.parallel.tasks.in.project=true
# Android优化
android.useAndroidX=true
android.enableJetifier=true
android.enableR8.fullMode=true
android.nonTransitiveRClass=true
android.nonFinalResIds=true
构建缓存¶
# 查看构建缓存
./gradlew --build-cache build
# 清理构建缓存
./gradlew cleanBuildCache
# 配置远程缓存(团队开发)
# gradle.properties
systemProp.gradle.cache.remote.url=https://your-cache-server/cache/
7.2 增量构建优化¶
// build.gradle.kts
android {
// 启用非传递性R类
nonTransitiveRClass = true
// 启用非最终资源ID
nonFinalResIds = true
buildFeatures {
// 按需启用功能
compose = true
buildConfig = true
// viewBinding = true
// dataBinding = false
}
}
// 使用配置缓存
// gradle.properties
org.gradle.configuration-cache=true
org.gradle.configuration-cache.problems=warn
7.3 构建时间分析¶
# 生成构建扫描
./gradlew build --scan
# 分析构建性能
./gradlew --profile build
# 查看任务耗时
./gradlew build --console=verbose
# 使用Build Analyzer (Android Studio)
# VS Code中查看build/reports/profile/profile-*.html
7.4 常用Gradle命令速查¶
| 命令 | 说明 |
|---|---|
./gradlew build | 完整构建 |
./gradlew assembleDebug | 构建Debug APK |
./gradlew assembleRelease | 构建Release APK |
./gradlew clean | 清理构建产物 |
./gradlew test | 运行单元测试 |
./gradlew connectedCheck | 运行仪器测试 |
./gradlew lint | 运行静态检查 |
./gradlew dependencies | 查看依赖树 |
./gradlew tasks | 查看所有任务 |
./gradlew --stop | 停止Gradle Daemon |
8. 代码片段与快捷键定制¶
8.1 Kotlin代码片段¶
.vscode/kotlin-snippets.json:
{
"Compose Preview": {
"prefix": "preview",
"body": [
"@Preview(showBackground = true)",
"@Composable",
"fun ${1:ScreenName}Preview() {",
" ${2:AppTheme} {",
" ${1:ScreenName}()",
" }",
"}"
],
"description": "Create a Compose preview function"
},
"Compose Screen": {
"prefix": "composescreen",
"body": [
"@Composable",
"fun ${1:ScreenName}Screen(",
" viewModel: ${1:ScreenName}ViewModel = hiltViewModel(),",
" onNavigateBack: () -> Unit = {}",
") {",
" val uiState by viewModel.uiState.collectAsStateWithLifecycle()",
" ",
" ${1:ScreenName}Content(",
" uiState = uiState,",
" onEvent = viewModel::onEvent",
" )",
"}",
"",
"@Composable",
"private fun ${1:ScreenName}Content(",
" uiState: ${1:ScreenName}UiState,",
" onEvent: (${1:ScreenName}Event) -> Unit",
") {",
" $0",
"}"
],
"description": "Create a complete Compose screen with ViewModel"
},
"ViewModel": {
"prefix": "viewmodel",
"body": [
"@HiltViewModel",
"class ${1:Name}ViewModel @Inject constructor(",
" private val ${2:repository}: ${3:Repository}",
") : ViewModel() {",
"",
" private val _uiState = MutableStateFlow(${1:Name}UiState())",
" val uiState: StateFlow<${1:Name}UiState> = _uiState.asStateFlow()",
"",
" fun onEvent(event: ${1:Name}Event) {",
" when (event) {",
" $0",
" }",
" }",
"}",
"",
"data class ${1:Name}UiState(",
" val isLoading: Boolean = false",
")",
"",
"sealed class ${1:Name}Event"
],
"description": "Create a ViewModel with StateFlow"
},
"Repository": {
"prefix": "repository",
"body": [
"interface ${1:Name}Repository {",
" suspend fun get${2:Items}(): Result<List<${3:Item}>>",
" fun get${2:Items}Flow(): Flow<List<${3:Item}>>",
"}",
"",
"class ${1:Name}RepositoryImpl @Inject constructor(",
" private val ${4:api}: ${5:Api},",
" private val ${6:dao}: ${7:Dao}",
") : ${1:Name}Repository {",
" $0",
"}"
],
"description": "Create Repository interface and implementation"
},
"UseCase": {
"prefix": "usecase",
"body": [
"class ${1:Action}${2:Name}UseCase @Inject constructor(",
" private val repository: ${2:Name}Repository",
") {",
" suspend operator fun invoke($3): Result<$4> {",
" return try {",
" $0",
" } catch (e: Exception) {",
" Result.failure(e)",
" }",
" }",
"}"
],
"description": "Create a UseCase class"
}
}
8.2 快捷键配置¶
keybindings.json:
[
{
"key": "ctrl+shift+a",
"command": "workbench.action.tasks.runTask",
"args": "gradle: assembleDebug"
},
{
"key": "ctrl+shift+t",
"command": "workbench.action.tasks.runTask",
"args": "gradle: test"
},
{
"key": "ctrl+shift+l",
"command": "workbench.action.tasks.runTask",
"args": "logcat"
},
{
"key": "f5",
"command": "workbench.action.debug.start",
"when": "debuggersAvailable && debugState == 'inactive'"
},
{
"key": "ctrl+shift+d",
"command": "workbench.view.debug"
},
{
"key": "ctrl+k ctrl+i",
"command": "editor.action.showHover"
}
]
8.3 自定义任务快捷键¶
// 快速运行常用命令
{
"key": "ctrl+alt+c",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "./gradlew clean\u000D" }
},
{
"key": "ctrl+alt+b",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "./gradlew build\u000D" }
},
{
"key": "ctrl+alt+i",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "adb install -r app/build/outputs/apk/debug/app-debug.apk\u000D" }
}
9. AI辅助开发集成¶
9.1 GitHub Copilot配置¶
安装与激活¶
- 安装扩展:
GitHub.copilot - 登录GitHub账号
- 接受授权
配置优化¶
// settings.json
{
"github.copilot.enable": {
"*": true,
"markdown": true,
"plaintext": false
},
"github.copilot.inlineSuggest.enable": true,
"github.copilot.advanced": {
"lengthThreshold": 20,
"suggestionDelay": 50
}
}
Copilot使用技巧¶
| 快捷键 | 功能 |
|---|---|
Tab | 接受建议 |
Ctrl+Enter | 打开Copilot面板 |
Alt+] | 下一个建议 |
Alt+[ | 上一个建议 |
Ctrl+Shift+I | 内联聊天 |
9.2 AI辅助代码审查¶
创建AI审查工作流:
# 创建代码审查脚本
# scripts/ai-review.sh
#!/bin/bash
echo "请AI审查以下代码变更:"
git diff HEAD~1
echo ""
echo "审查要点:"
echo "1. 代码质量和可读性"
echo "2. 潜在的性能问题"
echo "3. 安全漏洞"
echo "4. 最佳实践遵循情况"
9.3 智能提示词模板¶
创建常用提示词文件 .vscode/prompts.md:
# Android开发常用AI提示词
## 生成Compose组件
生成一个[功能描述]的Jetpack Compose组件,要求:
- 使用Material Design 3
- 支持主题适配
- 包含预览函数
- 添加适当的注释
## 优化性能
分析以下代码的性能问题并提供优化建议:
```text
[粘贴代码]
```
## 生成测试
为以下类生成单元测试:
```text
[粘贴代码]
```
要求:
- 使用JUnit 5
- 使用MockK进行模拟
- 覆盖正常和异常场景
- 测试命名清晰
## 重构建议
重构以下代码以提高可维护性:
```text
[粘贴代码]
```
要求:
- 遵循SOLID原则
- 减少重复代码
- 提高可读性
10. 实践练习¶
练习1:完整环境搭建¶
任务:从零开始搭建完整的VS Code Android开发环境
步骤: 1. 安装JDK 17并配置环境变量 2. 安装Android SDK和必要组件 3. 安装VS Code和所有必备扩展 4. 创建第一个Jetpack Compose项目 5. 配置调试环境 6. 在模拟器上运行应用
验证清单: - [ ] java -version 显示JDK 17 - [ ] adb version 正常工作 - [ ] VS Code能识别Kotlin文件 - [ ] 能成功构建APK - [ ] 能在模拟器上运行
练习2:调试技巧实践¶
任务:练习各种调试技巧
- 断点调试
- 在循环中设置条件断点
- 使用日志断点
-
观察变量值变化
-
日志分析
- 过滤特定TAG的日志
- 分析应用启动日志
-
定位崩溃日志
-
性能分析
- 使用Build Analyzer分析构建时间
- 识别构建瓶颈
- 优化构建配置
练习3:自定义工作流¶
任务:创建个性化的开发工作流
- 配置常用代码片段(至少5个)
- 设置快捷键绑定(至少3个)
- 创建常用Gradle任务快捷方式
- 配置AI辅助开发环境
提交要求: - .vscode/settings.json 配置 - .vscode/keybindings.json 配置 - .vscode/tasks.json 配置 - 使用心得(不少于200字)
本章小结¶
核心要点¶
- VS Code是轻量级但功能强大的Android开发IDE,配合适当的扩展可达到接近Android Studio的体验
- 环境配置是开发的基础,需要正确配置JDK、Android SDK和环境变量
- 调试工具的熟练使用能大幅提升开发效率
- 构建优化能显著减少等待时间,提升开发体验
- AI辅助工具已深度集成到现代开发工作流中
关键配置检查表¶
| 配置项 | 文件路径 | 验证命令 |
|---|---|---|
| JDK | 环境变量 | java -version |
| Android SDK | 环境变量 | adb version |
| Kotlin扩展 | VS Code扩展 | 语法高亮正常 |
| Gradle | gradle-wrapper | ./gradlew --version |
| 调试配置 | .vscode/launch.json | F5启动调试 |
下一步¶
完成本章学习后,请进入第03章:Kotlin语言核心特性,开始学习Android开发的核心编程语言。
参考资源¶
官方文档¶
配置参考¶
社区资源¶
本章完成时间:预计1-2天