2. 开发环境搭建:Android Studio安装与配置、创建车载项目、配置Gradle与依赖、模拟器与真机调试

好,咱们正式开始动手了。这一章我带你搭好开发环境。别小看这一步,我在项目里见过太多人因为环境没配好,浪费一整天。说白了,工欲善其事,必先利其器。咱们一步步来,稳一点。

2.1 Android Studio 安装与配置

Android Studio 是官方 IDE,没得选。我个人习惯用最新稳定版,别追 beta 版,容易踩坑。

下载与安装

  • developer.android.com/studio 下载对应系统的安装包
  • Windows 用户注意:安装路径不要有中文或空格
  • macOS 用户直接拖到 Applications 文件夹
  • Linux 用户解压后运行 ./studio.sh
我的小建议:安装时勾选「Android Virtual Device」,后面调试会省事很多。

SDK 配置

启动后,Android Studio 会自动检测 SDK。如果没检测到,手动设置一下:

File → Settings → Appearance & Behavior → System Settings → Android SDK

这里要确认三样东西:

  • Android SDK Platform:至少装到 API 31(Android 12),车载项目常用这个
  • Intel HAXM 或 Windows Hypervisor:加速模拟器用的,必须装
  • SDK Tools:确保「Android SDK Build-Tools」和「Android Emulator」已勾选
注意:我曾经因为没装 HAXM,模拟器卡成 PPT。后来才发现 BIOS 里虚拟化技术没开。去 BIOS 把 Intel VT-x 打开,问题就解决了。

2.2 创建车载项目

环境搭好了,咱们创建一个车载项目。嗯,这里要注意,车载应用和普通手机应用不太一样。

新建项目

File → New → New Project
选择「Empty Activity」
项目名:CarLauncher
包名:com.example.carlauncher
语言:Kotlin(我强烈推荐,Google 官方也主推)
Minimum SDK:API 29(Android 10)

为什么选 API 29?因为车载系统目前主流还是 Android 10 和 11。你想想看,车机不像手机,更新没那么快。选太低又用不了新特性,API 29 是个平衡点。

配置 AndroidManifest.xml

车载 Launcher 需要声明一些特殊权限:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    
    <application>
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

看到 category.HOME 了吗?这就是 Launcher 的关键。系统启动时会找这个 category 的 Activity,把它设为桌面。我在第一个车载项目里就忘了加这个,结果应用装上去按 Home 键没反应……

2.3 配置 Gradle 与依赖

Gradle 是 Android 的构建工具。说白了,它负责下载依赖、编译代码、打包 APK。咱们得把它伺候好。

项目级 build.gradle

// 项目根目录下的 build.gradle
buildscript {
    ext {
        kotlin_version = '1.9.0'
        compose_version = '1.5.0'
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

模块级 build.gradle

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

android {
    namespace 'com.example.carlauncher'
    compileSdk 34

    defaultConfig {
        applicationId "com.example.carlauncher"
        minSdk 29
        targetSdk 34
        versionCode 1
        versionName "1.0"
    }

    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion compose_version
    }
}

dependencies {
    // Jetpack Compose
    implementation "androidx.compose.ui:ui:$compose_version"
    implementation "androidx.compose.material3:material3:1.1.0"
    implementation "androidx.activity:activity-compose:1.7.0"
    
    // 车载相关依赖
    implementation "androidx.car.app:app:1.3.0"
    
    // 生命周期
    implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.1"
}
重要:车载项目建议用 Compose 做 UI。为什么?因为车机屏幕分辨率五花八门,Compose 的响应式布局比 XML 好处理得多。我在一个 1280x720 的车机上试过,Compose 适配起来比传统 View 系统快一倍。

配置 Gradle 加速

Gradle 慢是出了名的。我教你几招:

  • 打开 gradle.properties,加上 org.gradle.parallel=true
  • 设置 JVM 内存:org.gradle.jvmargs=-Xmx4096m
  • 开启构建缓存:android.enableBuildCache=true

2.4 模拟器与真机调试

环境配好了,代码写好了,怎么跑起来?两种方式:模拟器和真机。

创建车载模拟器

Android Studio 自带的模拟器其实可以模拟车载环境:

Tools → Device Manager → Create device
选择「Tablet」分类下的「Automotive (1024p landscape)」
系统镜像选 API 29 或 30,带 Google APIs

为什么选 Automotive 镜像?因为它模拟了车载系统的 UI 框架和窗口管理。普通手机镜像跑车载应用,很多功能会报错。

经验之谈:模拟器启动后,按 Ctrl+Shift+F11 可以横竖屏切换。车载应用基本都是横屏,记得调过来。

真机调试

真机调试才是王道。模拟器再像,也比不上真车机。步骤很简单:

  1. 车机开启「开发者模式」:设置 → 关于 → 连续点击版本号 7 次
  2. 开启「USB 调试」
  3. 用 USB 线连接电脑
  4. 运行 adb devices 确认设备已连接

如果 adb devices 显示 unauthorized,别慌。车机上会弹出一个授权对话框,点「允许」就行。我遇到过一台车机死活不弹对话框,后来发现是 USB 线的问题——换根数据线就好了。

无线调试(进阶)

车机装在中控台,拉根线调试太难受了。我推荐用无线调试:

# 先有线连接一次
adb tcpip 5555
# 拔掉线,用 IP 连接
adb connect 192.168.1.100:5555

注意:车机和电脑要在同一个 WiFi 下。我习惯把这个命令写成脚本,一键连接。

避坑指南:我曾经在调试时发现应用安装失败,提示 INSTALL_FAILED_UPDATE_INCOMPATIBLE。这是因为车机上已经装了签名不同的版本。解决办法:先卸载旧版本,或者统一签名文件。

调试技巧汇总

场景 命令/操作 说明
查看日志 adb logcat -s CarLauncher 只显示你应用的日志,过滤掉系统噪音
抓取屏幕 adb shell screencap /sdcard/screen.png 调试 UI 布局时很有用
查看布局层级 Android Studio → Layout Inspector 能看清每个 View 的位置和大小
模拟来电 adb shell am broadcast -a android.intent.action.PHONE_STATE 测试 Launcher 被中断时的表现

好了,环境搭建就到这里。你现在应该能创建一个车载项目,在模拟器或真机上跑起来了。下一章咱们开始写真正的 Launcher 界面——那个你每天开车都会看到的桌面。

记住:环境搭好了,后面就顺了。别急,慢慢来。