3、第一个车载应用:创建车载项目、了解AndroidManifest.xml配置、运行到模拟器
好,咱们开始动手了。
前面两章聊了车载Android的背景和开发环境搭建,说实话,那些都是热身。这一章才是真正的「Hello World」——我们要亲手创建第一个车载应用,把它跑起来。
我个人习惯是,学任何新平台,先让一个空应用在屏幕上亮起来。哪怕它什么都不做,那种「我能控制它了」的感觉,特别重要。
3.1 创建车载项目
打开Android Studio,点「New Project」。这里有个坑——别选错模板。
普通手机应用选「Empty Activity」就行,但车载项目我建议选「No Activity」。为什么?因为车载应用的入口往往不是Activity,而是CarService或者MediaBrowserService。不过咱们是入门,先选「Empty Activity」也没问题,后面再改。
关键配置项:
- Package Name: 建议用 com.yourcompany.carapp 这种格式
- Minimum SDK: 车载一般选 API 29 (Android 10) 起步
- Language: Kotlin 是首选,Java 也行,但我个人推荐 Kotlin
项目创建后,你会看到一堆文件。别慌,咱们重点关注三个:
build.gradle (Module: app)—— 项目的构建配置AndroidManifest.xml—— 应用的「身份证」MainActivity.kt—— 入口界面
嗯,这里要注意:车载应用和手机应用在build.gradle里有个区别——需要添加androidx.car.app:app依赖。我刚开始做车载开发时,忘了加这个,结果跑起来直接崩溃,找了半天原因。
// build.gradle (Module: app)
dependencies {
implementation 'androidx.car.app:app:1.3.0'
implementation 'androidx.core:core-ktx:1.9.0'
// ... 其他依赖
}
3.2 AndroidManifest.xml 配置——别小看它
AndroidManifest.xml 是每个Android应用的「户口本」。系统启动你的应用前,会先读这个文件。配置错了,应用根本跑不起来。
车载应用和手机应用在Manifest上有几个关键区别:
| 配置项 | 手机应用 | 车载应用 |
|---|---|---|
| 启动Activity | 标准Activity | 需要CarAppService |
| 权限声明 | 普通权限 | 可能需要车载专属权限 |
| 硬件特性 | 触摸屏 | 方向盘、旋钮等 |
来看一个最简的车载Manifest配置:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.carapp">
<!-- 车载应用需要声明汽车特性 -->
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
<application
android:allowBackup="true"
android:label="我的车载应用"
android:supportsRtl="true"
android:theme="@style/Theme.CarApp">
<!-- 车载应用的主入口 -->
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
我曾经踩过的坑:
有一次我忘了加 uses-feature android:name="android.hardware.type.automotive",结果应用在车载模拟器上根本搜不到。系统认为这是个手机应用,直接过滤掉了。找了整整一下午,最后发现是这行配置的问题。
另外,android:exported="true" 这个属性在Android 12之后必须显式声明。我见过不少新手因为这个报错,一脸懵。
3.3 运行到模拟器
好,代码写完了,Manifest配好了。接下来就是见证奇迹的时刻——跑起来。
首先,你得有一个车载模拟器。如果你按第二章的教程配置好了,现在应该能看到一个带车载界面的模拟器。如果没有,赶紧回去配一下。
运行步骤很简单:
- 在Android Studio顶部工具栏,选择你的车载模拟器设备
- 点击绿色三角形「Run」按钮
- 等待编译和部署
但这里有个常见问题——编译速度慢。尤其是第一次,Gradle要下载一堆依赖。我建议你泡杯咖啡,或者去个洗手间。嗯,真的需要点耐心。
提速小技巧:
- 在 gradle.properties 里加上
org.gradle.parallel=true - 使用
--offline模式(如果依赖已经下载过) - 把模拟器的 RAM 调到 2GB 以上,不然卡到你怀疑人生
应用部署成功后,模拟器上会弹出你的应用界面。如果一切顺利,你会看到一个空白的Activity——这就是你的第一个车载应用。
说实话,我第一次在车载模拟器上看到自己的应用时,还挺激动的。虽然它什么都没做,但那种「我能控制车载系统了」的感觉,真的很棒。
3.4 常见问题与避坑指南
运行过程中,你可能会遇到这些问题:
- 「INSTALL_FAILED_MISSING_SHARED_LIBRARY」 —— 忘了加
uses-feature automotive - 「ActivityNotFoundException」 —— Activity 没在 Manifest 里注册
- 「模拟器黑屏」 —— 可能是 GPU 渲染问题,试试关闭硬件加速
我曾经遇到一个特别诡异的问题:应用在模拟器上能跑,但一放到真车上就闪退。查了半天,发现是车载系统的API版本比模拟器低,我用了高版本的API。从那以后,我养成了一个习惯——开发时就把targetSdkVersion设成和车载系统一致。
好了,到这里,你的第一个车载应用已经成功跑起来了。虽然它还很简陋,但别急,后面我们会一步步给它加上导航、音乐、电话这些真正的车载功能。
下一章,我们来聊聊车载应用的界面设计——和手机完全不一样的那套东西。