工欲善其事,必先利其器。本章将带你从零开始搭建 Kotlin/Android 开发环境,创建并运行你的第一个项目。
核心方法论:工欲善其事,必先利其器
「学徒啊,在我的工坊里,没有人会一进门就去刨木头。你要先认清眼前有哪些工具,挑出最趁手的那把;再把工作台收拾妥当,各种器具摆放得有条不紊;最后量准了、画好了线,才落下第一刀。写代码和做木工是一个道理——环境不对,再好的手艺也白费。今天,老夫带你把这间数字工坊从头布置好。」
做木匠活之前,第一件事是什么?不是去砍树,而是挑一把好锯。程序员的"锯子"就是 IDE——集成开发环境。工具选对了,事半功倍;选错了,处处别扭。
Kotlin 是 JetBrains 这家"工具铺"亲手打造的语言,所以 JetBrains 家族的 IDE 对 Kotlin 的支持自然是最精良的,就像铸剑师用自己锻的剑最为顺手。你需要在两位主力"帮手"之间做出选择:
IntelliJ IDEA 是 JetBrains 出品的通用 Java/Kotlin IDE,好比工坊里的万能工作台。它分为两个版本:
由于 Kotlin 本身就是 JetBrains 开发的,IntelliJ IDEA 对 Kotlin 的支持可以说是"原生级别"——代码补全、重构、调试等体验都是最流畅的。打个比方:锻造师用自己铺子出的锤子,怎么抡都顺手。
Android Studio 是 Google 官方推出的 Android 开发 IDE。它基于 IntelliJ IDEA Community Edition 构建,在此基础上添加了大量 Android 专属功能——就像在万能工作台上又加装了一整套专用夹具,专门为 Android 这种"材料"而设计:
Android Studio 完全免费,是进行 Android 开发的首选工具。老夫的建议:如果你的目标是造 Android 应用这门手艺,那这就是你的主工作台。
老夫常说,"活儿定工具,工具不定活儿"。根据你要干的活计,选对应的家什:
| 场景 | 推荐 IDE | 理由 |
|---|---|---|
| 只想学习 Kotlin 语言 | IntelliJ IDEA CE | 轻量、启动快,专注语言本身 |
| 学习 Kotlin + Android 开发 | Android Studio | 内置模拟器、SDK 管理、Compose 预览等 |
| Kotlin 后端开发(Ktor、Spring) | IntelliJ IDEA | 对服务端框架支持更好 |
| Kotlin Multiplatform | 两者皆可 | 涉及 Android 部分时用 Android Studio |
本教程的选择
由于本教程最终目标是 Android 开发,后续章节将以 Android Studio 为主要开发环境。这好比老夫教你做家具,虽然锯子和刨子都能在别的台子上用,但做家具最终还得到木工台前干活。如果你目前只想练习 Kotlin 语法,可以先安装 IntelliJ IDEA 社区版,后续再切换到 Android Studio——两者的 Kotlin 编码体验几乎一致,不用担心白学。
好,工具选定了,现在该把它请进你的工坊了。安装 Android Studio 就像组装一张好的工作台:先领材料,再按步骤搭建,最后调试校准。老夫一步步带你来。
访问 Android Studio 官方下载页面:
https://developer.android.com/studio
页面会自动检测你的操作系统并提供对应的安装包。Android Studio 支持 Windows、macOS 和 Linux 三大平台。无论你的工坊是什么样的台面,都有配套的安装方案。
装工作台之前,先量量场地够不够大。老夫把最低门槛和推荐配置都列在这里了:
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Windows 8 / macOS 10.14 / Linux 64位 | 最新版本 |
| 内存(RAM) | 8 GB | 16 GB 或更多 |
| 磁盘空间 | 8 GB(IDE + SDK + 模拟器) | 20 GB 以上 |
| 屏幕分辨率 | 1280 x 800 | 1920 x 1080 或更高 |
注意内存
这里老夫要多唠叨几句:Android Studio 本身就比较吃内存,再加上 Gradle 构建和模拟器运行,8 GB 内存只能说"勉强够用"——就像在一张小桌子上又要摊图纸又要放工具,转个身就碰到东西。如果你的电脑内存不足 8 GB,建议使用真机调试而非模拟器,或者先用 IntelliJ IDEA + Kotlin Playground 学习语言基础。磨刀不误砍柴工,但也别拿菜刀去伐大树。
安装过程就像搭榫卯结构——按顺序来,一步都不能跳:
.exe,macOS 为 .dmg,Linux 为 .tar.gz)。.exe,按向导一路点 Next 即可。.dmg,将 Android Studio 拖入 Applications 文件夹。/opt/ 或你喜欢的目录,运行 bin/studio.sh。第一次打开 Android Studio 时,会出现 Setup Wizard——可以理解为工作台的校准环节。关键步骤如下:
国内网络问题
如果你在国内下载速度很慢,可以考虑配置代理或使用国内镜像源。在 Android Studio 中,进入 File > Settings > Appearance & Behavior > System Settings > HTTP Proxy 配置代理。也可以在 gradle.properties 文件中配置 Gradle 的代理设置。巧匠不怨路远,但搬砖总得找条近路不是?
安装完成后,建议打开 SDK Manager 盘点一下你的"工具箱",确认各项工具齐备:
Tools > SDK Manager(或在欢迎页面点击 More Actions > SDK Manager)。以上四件工具,老夫称之为"四大件"。缺了哪个,后面都会出问题。趁现在一次配齐,省得回头返工。
工具到位,工作台校准完毕——万事俱备,该动手了。老夫有个规矩:每个学徒进工坊的第一天,都要亲手做一件最简单的物件。不是为了展示,而是为了验证所有工具都好使,手上的活儿能跑通全流程。今天你的"第一件作品"就是一个 Hello World 项目。
下面这张配置表就像图纸上的尺寸标注——每一项都有讲究,老夫逐一给你说明:
| 配置项 | 说明 | 建议值 |
|---|---|---|
| Name | 项目名称,显示在应用标题栏 | MyFirstApp |
| Package name | 应用的唯一标识,通常是倒序域名格式 | com.example.myfirstapp |
| Save location | 项目保存路径 | 默认路径即可 |
| Language | 编程语言 | Kotlin(务必确认) |
| Minimum SDK | 应用支持的最低 Android 版本 | API 26 (Android 8.0) |
| Build configuration language | 构建脚本语言 | Kotlin DSL(推荐) |
关于 Minimum SDK
Minimum SDK 决定了你的应用能在多老的 Android 设备上运行。选择 API 26(Android 8.0)是个不错的平衡点——它覆盖了约 95% 以上的活跃设备,同时可以使用大部分现代 API。这就像做家具选木材的尺寸标准:太大了材料浪费,太小了强度不够,找到那个恰好的分寸。你可以点击下方的 "Help me choose" 链接查看各 API 级别的市场份额。
项目创建后,Android Studio 会自动执行 Gradle Sync——它会根据项目配置下载所需的依赖库和插件。你会在底部状态栏看到进度条。
首次同步可能需要较长时间(几分钟甚至更久),因为需要下载 Kotlin 编译器、Compose 库、AndroidX 库等大量依赖。好比老夫第一次进一家新材料铺,各种料子都要过一遍手——但只要过了这第一趟,后面就快了,因为依赖已经缓存到本地。
Gradle 同步失败?
如果 Gradle 同步失败,先别慌。老夫的经验:十次同步失败,八次是网络问题。检查你的网络连接,或尝试配置 Gradle 代理。另一个常见原因是 JDK 版本不匹配——Android Studio 自带了 JDK,一般不需要额外安装,但如果你手动设置过 JAVA_HOME 环境变量,可能会产生冲突。在 File > Settings > Build > Build Tools > Gradle 中确认使用的是 Android Studio 内置的 JDK。记住:排故障也是手艺的一部分,遇到问题不绕路、不回避,逐个排查。
Gradle 同步完成后,让我们打开这张"施工图"仔细看看。一个优秀的匠人不会拿到材料就乱锯,而是先把图纸读透。在左侧的 Project 面板中切换到 Project 视图(而不是默认的 Android 视图),你会看到真实的文件系统结构——这才是你的项目在磁盘上的本来面目:
MyFirstApp/
├── app/ // 主应用模块
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/ // Kotlin/Java 源代码(历史原因叫 java)
│ │ │ │ └── com/example/myfirstapp/
│ │ │ │ └── MainActivity.kt
│ │ │ ├── res/ // 资源文件(布局、图片、字符串等)
│ │ │ │ ├── drawable/
│ │ │ │ ├── mipmap/
│ │ │ │ └── values/
│ │ │ └── AndroidManifest.xml // 应用清单文件
│ │ └── test/ // 单元测试代码
│ └── build.gradle.kts // 模块级构建脚本
├── gradle/ // Gradle Wrapper 文件
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── build.gradle.kts // 项目级构建脚本
├── settings.gradle.kts // 项目设置(模块声明等)
├── gradle.properties // Gradle 属性配置
└── gradlew / gradlew.bat // Gradle Wrapper 启动脚本
这棵目录树就像一间精心规划的工坊:源代码有源代码的工位,资源文件有资源文件的架子,构建脚本相当于加工流程表。每样东西都有它该待的位置——乱放工具的匠人,做不出好活儿。
MainActivity.kt — 应用的入口 Activity,你作品的"大门"。用 Compose 模板创建的项目中,它大致长这样:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyFirstAppTheme {
Surface {
Greeting("World")
}
}
}
}
}
@Composable
fun Greeting(name: String) {
Text(text = "Hello $name!")
}
现在不需要完全理解这段代码——就像你第一天进工坊,老夫不会让你立刻分辨十八种木料。只需知道:setContent 设置了屏幕上显示的内容,Greeting 是一个 Compose 可组合函数,它显示了 "Hello World!" 文本。后续章节,老夫会把每一行都拆开给你讲透。
AndroidManifest.xml — 应用的"身份证",也可以说是你这件作品的"出厂铭牌",上面刻着:
build.gradle.kts(模块级) — 这是整个项目最重要的配置文件之一,相当于加工流程表,控制着材料清单和制作规格:
// app/build.gradle.kts
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
}
android {
namespace = "com.example.myfirstapp"
compileSdk = 34
defaultConfig {
applicationId = "com.example.myfirstapp"
minSdk = 26
targetSdk = 34
versionCode = 1
versionName = "1.0"
}
}
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.material3)
// ... 更多依赖
}
这里定义了编译 SDK 版本、最低 SDK 版本、应用版本号,以及项目依赖的所有第三方库。老夫打个比方:compileSdk 是你能用的最新工具箱版本,minSdk 是你做出来的成品最低要在什么年代的"架子"上能放得稳,dependencies 则是你从外头采购来的零部件清单。
你可能注意到项目中有 gradlew(Mac/Linux)和 gradlew.bat(Windows)两个脚本,以及 gradle/wrapper/ 目录。这就是 Gradle Wrapper。
它的作用是确保每个开发者使用完全相同版本的 Gradle 来构建项目,避免"在我的机器上可以运行"的问题。这个道理老夫最懂:如果两个匠人用的尺子刻度不一样,拼出来的家具一定合不上缝。Gradle Wrapper 就是那把"标准尺"——当你克隆一个项目时,不需要预先安装 Gradle,Wrapper 会自动下载正确版本的 Gradle,保证人人度量一致。
Android 视图 vs Project 视图
Android Studio 默认使用 Android 视图,它对目录结构做了简化和重新组织,更方便日常开发。比如它会把 java/ 和 kotlin/ 目录合并显示、将多个 res/ 目录扁平化等。初学阶段建议两种视图都熟悉——Android 视图是经过整理的"简明图纸",Project 视图是"实物原图"。两张图都能看懂,你对项目的理解才透彻。
材料备好了,图纸也读完了——现在到了最激动人心的一步:让你的第一件作品跑起来!老夫说句实话,一个匠人最大的成就感,就是看到自己手下的东西真正"活"了。你有两种方式运行 Android 应用:使用模拟器或真机。
| 方式 | 优点 | 缺点 |
|---|---|---|
| 模拟器(Emulator) | 无需 Android 手机;可模拟不同设备和 API 版本;方便截图和录屏 | 占用大量内存和 CPU;部分硬件功能无法模拟(NFC、蓝牙等) |
| 真机(Physical Device) | 性能好、响应快;能测试真实硬件功能;体验最接近用户 | 需要一台 Android 手机;需要开启开发者模式和 USB 调试 |
老夫的建议:先从模拟器开始。就像做木工,先在边角料上试手感,等熟练了再上正料。模拟器不需要额外设备,改了代码立刻能看效果。
AVD(Android Virtual Device)就是你的"虚拟试验台"。创建过程如下:
Tools > Device Manager。加速模拟器
为了让模拟器流畅运行,请确保你的电脑启用了硬件加速:Windows 上需要开启 Intel HAXM 或 Windows Hypervisor Platform(WHV),macOS 上默认使用 Hypervisor.framework(无需额外配置),Linux 上使用 KVM。如果模拟器启动后非常卡顿,很可能就是硬件加速没有启用。老夫的话:工具不利,干活受罪。这一步千万别偷懒。
一切就绪,开工!
Shift + F10(Windows/Linux)/ Control + R(macOS)。看到了吗?屏幕上那行朴素的文字,就是你的第一件作品。虽然只是一行字,但从项目创建到成功运行,背后涉及了 Kotlin 编译器、Gradle 构建系统、Android SDK 和模拟器的协同工作——就像一件看似简单的榫卯接头,背后是对每种工具、每道工序的精确掌控。老夫要恭喜你:你已经打通了从"写代码"到"跑起来"的全链路。每一个 Hello World 都是一段匠人生涯的起点。
如果你想在真实手机上运行应用,也不难——好比从试验台换到正式工位。总共三步:开启开发者模式 → 打开 USB 调试 → 连接电脑。不过老夫要提醒你:不同品牌的手机,"开关"藏的位置不太一样,就像不同师傅的工坊,工具柜的布局各有讲究。
所有 Android 手机的套路是一样的:找到某个"版本号"相关的字段,连续点击 7 次,系统会提示"您已进入开发者模式"。但这个字段藏在哪里,各家不同:
| 手机品牌 | 路径 | 连续点击的字段 |
|---|---|---|
| 原生 Android / Pixel | 设置 > 关于手机 | 版本号(Build number) |
| 小米 / Redmi | 设置 > 我的设备 > 全部参数与信息 | MIUI 版本(或 HyperOS 版本) |
| 华为 / 荣耀 | 设置 > 关于手机 | 版本号 |
| OPPO / Realme | 设置 > 关于本机 | 版本号 |
| vivo / iQOO | 设置 > 关于手机 | 软件版本号 |
| 三星 | 设置 > 关于手机 > 软件信息 | 编译编号(Build number) |
| 一加 | 设置 > 关于本机 | 版本号 |
鲁班的经验
如果你的手机品牌不在上面的表里,也不用慌。万变不离其宗:进设置,找到"关于手机"相关的页面,看到带"版本"字样的字段就猛点 7 下。系统一定会给你反馈——"您已处于开发者模式"或者"还差 X 步进入开发者模式"。找开关这件事,耐心比运气重要。
开启开发者模式后,你需要找到开发者选项并打开 USB 调试。注意,开发者选项的位置也因品牌而异:
| 手机品牌 | 开发者选项的位置 |
|---|---|
| 原生 Android / Pixel | 设置 > 系统 > 开发者选项 |
| 小米 / Redmi | 设置 > 更多设置 > 开发者选项 |
| 华为 / 荣耀 | 设置 > 系统和更新 > 开发者选项 |
| OPPO / Realme | 设置 > 其他设置 > 开发者选项 |
| vivo / iQOO | 设置 > 系统管理 > 开发者选项 |
| 三星 | 设置 > 开发者选项 |
| 一加 | 设置 > 其他设置 > 开发者选项 |
进入开发者选项后,找到并打开 USB 调试。
小米用户必看
小米/Redmi 手机除了打开 USB 调试之外,还必须额外开启 "USB 安装"(也在开发者选项中)。如果不开这个开关,Android Studio 能识别到手机,但安装应用时会失败——这就像门锁开了,但门闩没拔,还是推不开。开启时系统会要求你插入 SIM 卡并登录小米账号,按提示操作即可。
无线调试(Android 11+)
如果你的手机是 Android 11 及以上版本,还可以使用无线调试,摆脱 USB 线的束缚。在开发者选项中打开"无线调试",然后在 Android Studio 的 Device Manager 中通过"Pair Devices Using Wi-Fi"进行配对。老夫虽然是老派匠人,但好用的新工具也不排斥——不用线缆确实方便,改完代码扭头看手机就行。前提是手机和电脑在同一个 Wi-Fi 网络下。
老夫的工坊里不只有主工作台。老夫还有好几件小巧趁手的辅助工具——修边的、试样的、打草稿的。学 Kotlin 也一样,除了 Android Studio 这张主台之外,还有一些轻量级工具非常适合日常练手。在后续章节学习语言特性时,用这些工具可以快速验证想法,不需要每次都创建完整的 Android 项目。毕竟,试一行代码的效果,犯不着启动整条流水线。
Kotlin Playground(play.kotlinlang.org)是 JetBrains 官方提供的在线 Kotlin 编辑器。老夫把它比作"随身携带的小工作台",它的优势在于:
来,试一把——在 Playground 中输入以下代码并运行:
fun main() {
val languages = listOf("Java", "Kotlin", "Swift", "Dart")
languages
.filter { it.startsWith("K") }
.forEach { println("I love $it!") }
}
// 输出: I love Kotlin!
不用完全理解语法,只需要感受一下 Kotlin 代码的简洁和可读性——就像老夫给你看一件成品,你不用马上知道每道工序怎么做,先感受一下"好的手艺长什么样"。这些语法细节我们在第 3 章会详细学习。
REPL(Read-Eval-Print Loop,读取-求值-输出 循环)是一种交互式编程工具。你输入一行代码,它立即执行并显示结果。老夫觉得它最像什么呢?就像手边的一块试刨料——想试试这把刀快不快、这种纹路怎么走,随手一刨就知道了,不用专门找块好木头。
在 IntelliJ IDEA 或 Android Studio 中使用 Kotlin REPL:
Tools > Kotlin > Kotlin REPL。Ctrl + Enter(macOS 上是 Cmd + Enter)执行。// 在 REPL 中尝试
val x = 10
val y = 20
println("x + y = ${x + y}")
// 输出: x + y = 30
// 试试类型推断
val message = "Hello" // 自动推断为 String
println(message::class.simpleName)
// 输出: String
REPL 的使用场景
当你学习一个新的 API 或语法特性时,先在 REPL 中快速试验比创建文件来测试要高效得多。比如想看看 String.reversed() 的效果?直接在 REPL 里输入 "Kotlin".reversed(),立刻得到结果 "niltoK"。老夫说:好匠人动手前先试样,试样的速度越快,出活儿的质量越高。
Scratch 文件(草稿文件)是 IntelliJ / Android Studio 提供的一种临时文件机制。它比 REPL 更强大——你可以写多行代码、定义函数和类,就像在正式项目文件中一样,但它不属于任何项目,不会被提交到版本控制。老夫把它比作"工坊里的草稿纸"——想到什么就画几笔,画完了也不心疼扔掉。
创建 Scratch 文件的方法:
Ctrl + Alt + Shift + Insert(macOS 上是 Cmd + Shift + N,然后选择 Scratch File)。File > New > Scratch File。Scratch 文件的特点:
工具选择小结
老夫最后帮你理一理,什么场合用什么工具,心里要有数:
快速试验一行代码 → Kotlin REPL(试刨料)
写一段完整的测试代码 → Scratch 文件(草稿纸)
不在电脑旁 / 给别人演示 → Kotlin Playground(随身工作台)
正式项目开发 → Android Studio 项目文件(主工作台)
工具不在多,在于用得对路。该用小锤的时候别抡大锤,该上大锤的时候也别掏绣花针。
安装 Android Studio,完成首次启动配置向导,确保 SDK Manager 中的"四大件"(Build-Tools、Command-line Tools、Emulator、Platform-Tools)全部安装到位。然后截一张 SDK Manager 界面的图,确认工具齐全。
打开 Tools > SDK Manager,切换到 SDK Tools 标签页,逐一检查四个工具的勾选状态。如果有未安装的,勾选后点击 Apply 进行安装。
在 SDK Tools 标签页中,你应该能看到以下四项均显示 "Installed" 状态:
如果任何一项缺失,勾选后点击 Apply,等待下载安装完成即可。鲁班说:开工之前,先把家什点齐了。
按照本章 2.3 节的步骤,创建一个名为 MyFirstApp 的项目,使用 Empty Activity 模板、Kotlin 语言、Kotlin DSL 构建脚本。成功创建后,使用模拟器运行它,确认在屏幕上看到 "Hello" 字样。
如果 Gradle 同步一直卡住,检查你的网络连接。可以在 File > Settings > Build > Build Tools > Gradle 中确认 JDK 配置。模拟器选择 Pixel 系列设备 + 最新稳定版系统镜像即可。
完成以下检查点即为成功:
如果你看到了那行字——恭喜,这就是你的第一件作品。鲁班说:万丈高楼平地起,第一块砖最重要。
打开 Kotlin Playground(play.kotlinlang.org),在编辑器中输入以下代码并运行,观察输出结果:
fun main() {
val tools = listOf("锯子", "刨子", "凿子", "墨斗")
println("鲁班的工具箱有 ${tools.size} 件工具:")
tools.forEachIndexed { index, tool ->
println(" ${index + 1}. $tool")
}
}
然后尝试修改 tools 列表,加入你自己喜欢的"工具"名称,再次运行。
在 listOf() 的括号内添加新的字符串即可,用逗号分隔。例如:listOf("锯子", "刨子", "凿子", "墨斗", "曲尺")。
原始代码运行后,输出应为:
鲁班的工具箱有 4 件工具:
1. 锯子
2. 刨子
3. 凿子
4. 墨斗
修改后如果你加了"曲尺",输出会变成 5 件工具,并多出一行 5. 曲尺。这个练习的目的是让你亲手感受 Kotlin 代码的即时反馈——改了就能看到结果,这种手感对于学手艺至关重要。
在练习 2 创建的项目中,完成以下操作:
MainActivity.kt 的完整路径。app/build.gradle.kts 文件,找到 minSdk 的值,把它从 26 改为 24,然后点击顶部出现的 "Sync Now" 链接,观察 Gradle 重新同步。Tools > Kotlin > Kotlin REPL),输入 "Android".reversed(),按 Ctrl + Enter(macOS 为 Cmd + Enter)执行,查看结果。切换视图:点击 Project 面板左上角的下拉菜单,选择 "Project" 即可。MainActivity.kt 的完整路径形如 app/src/main/java/com/example/myfirstapp/MainActivity.kt。修改 minSdk 后一定要同步 Gradle,否则修改不会生效。
完成检查:
MainActivity.kt 的完整路径为:app/src/main/java/com/example/myfirstapp/MainActivity.ktminSdk 后,Gradle 同步应成功完成(底部状态栏显示 "Gradle sync finished"),项目仍然可以正常运行"Android".reversed(),输出结果为 diordnA鲁班说:熟悉工作台上每个旋钮、每个开关的位置,以后干起活来才不会手忙脚乱。今天多花十分钟摸索布局,将来能省下无数翻找的时间。