1. 开篇这个系列要做什么环境为什么值得单独讲一课做啥子嘛这四个字是四川话里特别日常的一句意思就是做什么呢干嘛呢。拿它当项目名是因为这个系列要做的APP本身就是一个帮你解决眼下不知道干嘛的小工具——周末在家无聊、晚饭没着落、朋友约你你说随便的时候打开它摇一摇给你蹦出一个选择。名字接地气产品定位也简单但背后的开发流程可是一点都不含糊。第一课我没打算直接带着你写代码。先缓一缓我们把应用开发环境这件事彻底搞明白。这是整个系列的第一块地基。我见过太多新人一上来就对着教程敲代码结果敲到第三天发现项目根本跑不起来回头一查是JDK版本不对Gradle同步失败SDK组件缺胳膊少腿一折腾就是一整天直接劝退。环境这东西平时不显山不露水但它决定了你后面每一次调试是顺畅还是煎熬。我后面几篇文章规划好了要陆续把界面、交互逻辑、数据存储、上架流程全部讲完如果基础环境这一关没过后面每篇你都会做得相当难受。这篇内容适合谁第一类是完全没有接触过Android开发的新手第二类是学过一点Kotlin或者Java但始终没把整套开发工具链理清楚的人第三类是手里有电脑想老老实实把第一个APP跑起来验证一下自己想法的朋友。这篇文章不聊业务逻辑不写促销活动只围绕应用开发环境这一个点讲透保证你学完就能把电脑变成一个随时能开工的Android开发工作台。可能有人会问现在做APP不是有那种网页上拖拖拽拽就能生成APP的平台吗为什么还要自己搭环境我在后面讲技术选型的时候会专门回答这里先给结论如果你想做的是一个能长期维护、能上应用商店、能持续加功能的正式产品标准的技术栈就绕不开。拖拽平台做出来的东西当原型展示可以真要上架运营审核、性能、灵活性都会让你头疼。所以别嫌环境搭建这一步啰嗦它就是你真正入行的门票。这篇文章的实操步骤是我反复验证过的最稳路线跟着走快的话半小时慢也就两三个小时路上踩过的坑我都提前帮你填平了。2. 应用开发环境拆解它不是一个软件而是整套工具链2.1 开发环境包含的五大核心组件先把最容易搞混的概念理清楚。很多人以为开发环境Android Studio装上就算完事。真不是。Android Studio只是你看到的那个窗口真正干活的是它背后的一整套工具链。我按重要程度给你拆成五大块第一块是JDK也就是Java开发工具包。Android APP大部分代码最终都要编译成能在虚拟机上运行的字节码这个编译过程靠的就是JDK。早期你必须自己单独装JDK、配JAVA_HOME环境变量、把Path加上一套操作下来能劝退半个宿舍的人。现在的Android Studio内置了JetBrains Runtime也就是JBR它对Android开发做了专门适配多数场景下你不需要自己再折腾JDK了。但前提是你得搞清楚用的这个内置JDK版本是多少后面配置Gradle的时候要用到。第二块是Android SDK全称Software Development Kit这才是Android开发的灵魂。它里面包含了各个安卓版本的平台库、构建工具、调试工具、模拟器镜像等一大堆东西。可以这么理解SDK是材料库你的APP要调用系统功能比如弹通知、读相册、发起网络请求靠的就是SDK里提供的API。SDK一般是你在Android Studio里通过SDK Manager按需下载的不用的版本可以不装免得占磁盘。第三块是IDE也就是集成开发环境。Android开发官方指定的就是Android Studio它是基于IntelliJ IDEA做的一套专业IDE界面、代码提示、调试工具、布局预览全是针对安卓开发深度定制过的。第四块是构建工具链包括Gradle和Android Gradle Plugin简称AGP。它负责把你的源代码、资源文件、第三方库打包成一个可安装的APK或AAB。Gradle是一个自动化构建系统AGP则是Gradle与Android之间的适配插件。这俩的版本匹配关系经常让人头疼后面我专门用一张表给你讲清楚。第五块是运行载体包括模拟器和真机。模拟器就是你在电脑上虚拟出一台手机优点是不需要真机也能跑APP缺点是启动慢、占内存真机调试则是用USB线把手机连到电脑上实时、真实、传感器功能完整。这五块少了哪一个都不算完整环境。我当年第一次配环境时只装了Android StudioSDK没勾选模拟器也没建点运行直接报错那时候真是丈二和尚摸不着头脑。后来做过的项目多了才明白环境搭得越完整后面写代码的效率越高。2.2 为什么官方推荐的Android Studio是最优解可能有读者会问了我能不能用VS Code写安卓能不能用Eclipse答案是能但我不建议。先说说我用过的野路子。早期Android开发确实用过Eclipse加ADT插件那时候安卓官方都还没推出Studio。后来Google在2013年推出Android Studio的预览版逐步把SDK工具都收编进去当时的体验简直是开启了新世界——以前Eclipse里各种插件版本互不兼容的问题一键消失。再后来有人用VS Code加Kotlin插件做安卓能写代码但调试、布局预览、模拟器管理这些功能都是靠拼凑出来的体验支离破碎。所以我的结论很明确除非你有非常特殊的需求否则别折腾直接用Android Studio。它和SDK、模拟器、构建工具的整合是官方设计的你在官网下载的安装包会自带SDK Manager和AVD Manager省下来的折腾时间够你多写好几个页面了。语言选择方面现在新项目我建议直接用Kotlin。它是JVM上的现代语言很多语法比Java简洁空安全机制也能帮你规避一大类崩溃问题而且Google已经把它定为Android开发的一等公民。当然老项目维护还是Java为主两种语言在同一个工程里也能共存不必一上来就搞什么一刀切迁移边写边改就行了。2.3 版本匹配关系JDK、Gradle、AGP、SDK Platform之间的对应这部分是我特别想拿出来单独讲的因为80%的环境问题都出在版本不匹配上。我见过有人电脑里装着JDK 8结果项目用的AGP 8.x一构建就报Unsupported class file major version也见过Gradle wrapper版本太低AGP却要求新语法同步直接失败。版本不是越新越好关键是匹配。我自己现在用的主流组合是这样的JDK 17Gradle 8.xAGP 8.xcompileSdk 34或35这几个数字之间的关系我用一张对照表给你看这里写的是近年稳定组合越新的组合对电脑性能要求也越高JDK版本最低AGP版本建议Gradle版本适用场景JDK 11AGP 7.0Gradle 7.x老项目维护低配置电脑JDK 17AGP 8.0Gradle 8.x新项目首选稳定主流JDK 21AGP 8.4Gradle 8.6尝鲜新特性非必要不追判断依据其实很简单Android Studio里打开一个项目时它会自动读取工程里的Gradle版本和AGP版本然后检查你当前IDE和JDK能不能支持。报错信息里一般会直接告诉你AGP x.y.z requires Gradle x.y.z或者requires Java 17。看到这种提示不用慌按它的要求去调整版本就行。我给新手的建议是别折腾老版本都是当年被坑过才总结出的血泪经验。你直接用最新稳定版Android Studio新建项目的时候选择Empty Views Activity模板IDE自动帮你生成一套匹配好的配置大概率不用手动改。Android SDK Platform版本则对应的是手机系统版本。比如API 34对应Android 14API 35对应Android 15。你装的SDK Platform版本至少要等于项目的compileSdk值否则编译时找不到对应平台库。模拟器的系统镜像又是另一个维度你可以装低版本的镜像来测试老设备兼容性也可以装最新的镜像体验新特性。这些都不是多难的事难的是没人给你讲清楚它们之间的关系你只能一个个碰。现在我把这颗雷拆了你照着做就行。3. 实操记录从零装出一个能跑的环境3.1 内置JDK与JAVA_HOME到底要不要自己装Java先回答最让人纠结的问题新版的Android Studio到底要不要单独装JDK我的结论是日常开发不需要。Android Studio从Arctic Fox版本开始就内置了JetBrains Runtime它预装在IDE目录里安装完Studio就等于有了可用的JDK环境。那什么情况下需要自己装JDK一般是命令行打包的时候。你在终端里跑gradle assembleRelease这类命令如果系统PATH里找不到java就会报错。另外如果你要在Jenkins这类CI服务器上打包服务器上通常没有Android Studio这时候就得手动装一个JDK并配置JAVA_HOME。验证JDK是否可用非常简单。在终端里执行java -version如果系统能打印出类似下面这样的信息说明JDK已经就绪openjdk version 17.0.8 2023-07-18 OpenJDK Runtime Environment (build 17.0.87) OpenJDK 64-Bit Server VM (build 17.0.87, mixed mode, sharing)如果你的电脑上没有JDK可以去发行版官网下载一个JDK 17的安装包安装后配置环境变量。以macOS为例在~/.zshrc里加上export JAVA_HOME/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home export PATH$JAVA_HOME/bin:$PATHWindows用户则需要在系统环境变量里新建JAVA_HOME指向JDK的安装目录然后编辑Path变量加上%JAVA_HOME%\bin。配置完成后重新打开终端执行java -version确认即可。这里有个小提醒改完环境变量记得开新的终端窗口旧窗口读到的还是老配置很多人改了半天没反应其实就差这一步。3.2 Android Studio下载安装与SDK Manager配置下载Android Studio最简单的方式是到官方开发者网站找到对应自己操作系统的安装包。Windows版是个exemacOS版是dmgLinux版有tar.gz和deb两种。我这里以Windows和macOS为例说一下需要注意的点。Windows安装时有几个选项值得留意如果你机器上还没有SDK安装向导会让你选择SDK组件的安装路径默认在%LOCALAPPDATA%\Android\Sdk。我是建议改成你自己好记忆的路径比如D:\Android\Sdk因为后续配置环境变量、命令行工具都要引用这个路径路径里尽量不要有空格和中文不然会有一些莫名其妙的问题。安装完打开Android Studio它会自动进入SDK Manager的引导界面让你勾选要装的组件。我建议至少勾上这几项Android SDK Platform选一个最新稳定版即可一般34或35Android SDK Build-Tools选一个稳定版本默认即可Android SDK Platform-Tools这个是adb调试工具所在Emulator如果要跑模拟器的话至于系统镜像先不用急着装等你建虚拟设备的时候再按需下载省磁盘空间。下载过程的耗时取决于你的网络这部分确实会有点考验耐心。如果进度条半天不动可以先把下载任务暂停检查磁盘空间和网络状况再重试。国内开发者圈子里有一个通用的优化办法是给Gradle配置国内镜像仓库这个我在第4节详细说。3.3 创建第一个工程完整跑通构建流程环境装好之后用一个小项目来验证一切是否通畅。在Android Studio欢迎页选择New Project选Empty Views Activity模板这是目前最干净的一个起点没有多余代码。项目名称可以就叫ZuoShaZiMa包名一般用反域名格式比如com.example.zuoshazima。Package Name是APP的唯一标识后面上架应用商店要用虽然可以后改但改起来牵扯到一堆文件建议一开始就想好。语言选KotlinMinimum SDK我建议选API 24也就是Android 7.0这样既能覆盖绝大多数设备又不用背老系统兼容性的包袱。选完点FinishAndroid Studio会开始第一次Gradle同步。第一次同步是一个比较漫长的过程它会把Gradle本身、AGP插件、各种依赖库全部下载到本地。原因很简单Gradle采用按需下载模式本地没有的组件都会临时去找仓库下载。下载完成后你可以在项目根目录看到这样一个结构ZuoShaZiMa/ ├── app/ │ ├── src/main/ │ │ ├── java/com/example/zuoshazima/ │ │ └── res/ │ └── build.gradle.kts ├── gradle/ ├── build.gradle.kts ├── settings.gradle.kts └── gradle.properties看懂这个结构是环境搭建最重要的一步。settings.gradle.kts是工程的顶层配置告诉Gradle这个项目包含哪些模块根目录的build.gradle.kts声明插件和公共配置app/build.gradle.kts才是你写APP级别配置的地方包括compileSdk、minSdk、依赖库等。构建产物最终会放在app/build/outputs/apk下面APK就是你能装到手机上的安装包。首次构建完成后工具栏上会出现绿色的Run按钮。点一下如果一切正常你会看到Gradle面板执行assemble任务最终弹出一个模拟器窗口或者连接的真机列表APP装上去跑起来了屏幕上显示一个Hello World的空页面。到这一步你的开发环境就算正式通关了。3.4 模拟器配置与真机连接两种方式怎么选模拟器的配置在AVD Manager里操作。打开方式是在Studio的欢迎页点More Actions选Virtual Device Manager然后点Create Device。选中你想模拟的手机型号比如Pixel 8这类参考机型然后选一个系统镜像。系统镜像我建议优先选API 34或者API 35的Google APIs版本带Google APIs的好处是可以调用Google服务接口调试的时候功能更全。镜像下载好后模拟器就能启动了。模拟器性能优化是第一优先级。在现在主流电脑配置下新建AVD时建议把图形选项设成Hardware - GLES 2.0CPU架构选x86_64内存按你物理机内存的一半左右分配比如16G内存的电脑分4G给模拟器。初次启动模拟器会比较慢因为它要冷启动整个安卓系统之后只要不关机再打开就快多了。再说真机连接。以安卓手机为例先在设置 - 关于手机里连续点击版本号七次开启开发者选项然后在开发者选项里打开USB调试。用数据线连上电脑手机弹出允许USB调试的授权弹窗点确定。如果一切顺利Studio的设备列表里就会出现你的手机型号。Windows用户可能还需要装一下手机厂商的USB驱动这个通常在手机官网的下载中心能找到。真机和模拟器怎么选我的习惯是UI开发用模拟器因为可以随便调整屏幕尺寸和系统版本涉及相机、蓝牙、GPS这类硬件功能必须用真机实测因为模拟器对传感器的模拟并不真实。还有一点真机调试的构建速度快一些因为不需要启动模拟器那一套虚拟机开销。两条路都走通环境这边就万无一失了。4. 环境搭建中的高频问题与排查思路4.1 构建慢、依赖下载卡住Gradle镜像仓库的配置方法只要在国内做开发这个问题早晚会遇到。Gradle默认从Google的Maven仓库和Maven Central下载依赖某些网络条件下速度确实不理想。表现就是Gradle同步转圈转半天偶尔还直接超时报错。解决办法是为Gradle配置镜像仓库。打开项目根目录的settings.gradle.kts在dependencyResolutionManagement的repositories块里把官方仓库替换成镜像仓库配置完大概是这个样子dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { maven(https://maven.aliyun.com/repository/google) maven(https://maven.aliyun.com/repository/central) maven(https://maven.aliyun.com/repository/gradle-plugin) google() mavenCentral() } }注意我把镜像仓库写在前面官方仓库兜底在后面。这种写法的好处是能走镜像的依赖就走镜像万一某些冷门依赖镜像里没有还能回落到原生仓库不会出现配置完镜像反而找不到依赖的尴尬。改完配置后在Android Studio里点一下Sync Now再观察下载速度通常会有立竿见影的效果。另外还有几个手动加速的办法一个是修改gradle.properties里的org.gradle.jvmargs把Gradle运行内存调大比如-Xmx4096m这样构建过程不容易因为内存不足被系统杀掉另一个是打开Android Studio的File - Settings - Build, Execution, Deployment - Build Tools - Gradle勾上Offline work在依赖已经全部下载过一遍之后离线构建能快很多。但要注意勾了离线模式之后新依赖下载不了所以只在旧项目反复构建时用。4.2 版本冲突与SDK组件缺失如何读懂构建报错构建报错大概是开发环境里最劝退人的东西。报错信息一屏一屏刷下来英文加堆栈新手很容易慌。我的建议是第一次遇到报错先别急着全看只找两类关键词第一类是FAILURE: Build failed with an exception后面的原因摘要第二类是What went wrong:后面的直接描述。这两行会把问题定位到具体配置。最常见的版本类报错有几种。Minimum supported Gradle version is x.x表示Gradle版本太低去gradle/wrapper/gradle-wrapper.properties里改distributionUrl把版本号调高再同步。The plugin requires Java x表示JDK版本不够去检查Studio的JDK设置或者补装对应版本的JDK。Failed to find target with hash string android-34说明你指定的SDK Platform没装打开SDK Manager勾上对应版本安装即可。还有一类是依赖冲突报错里通常会出现Dependency conflict或者More than one file was found with OS independent path。这类问题多半是多个第三方库带进了同一个底层库的不同版本。解决办法一般有两个要么在app/build.gradle.kts里用implementation显式指定统一版本要么用exclude把重复的文件排掉。前者更治本我一般优先用。第三方依赖解析失败也是一大类。报错类似Could not resolve com.xxx:yyy:1.0.0十有八九是仓库里没有这个库的指定版本。遇到这种情况先别怀疑网络去这个库的官方发布页看看版本号是否存在很多时候是你根据教程抄的版本号已经下架了换一个存在的新版本就行。4.3 高频问题速查表能查表解决的错误别去翻源码为了让你在爬坑的时候少走弯路我把这几年带新手遇到的经典环境问题整理成一张速查表。每个问题都是我或者身边的人真实碰到过的解决方式也都是实测有效。问题现象常见原因解决方式SDK location not foundStudio没有找到SDK路径在项目里新建local.properties写上sdk.dir你的SDK路径Gradle sync失败Connection timed out网络访问仓库不稳定按4.1节配置镜像仓库关闭代理设置手机连上电脑没反应USB调试没开或驱动缺失开启开发者选项和USB调试安装厂商驱动模拟器启动一闪而过硬件加速未启用或Hyper-V冲突检查BIOS里的虚拟化开关关闭Hyper-V后重启构建提示build-tools缺失build-tools版本未安装打开SDK Manager安装对应版本并重启aapt2 process unexpectedly exit资源文件里可能有非法字符按报错里的文件路径检查资源文件名和内容安装APK提示INCOMPATIBLE手机上的旧版APP签名不一致卸载旧版APP后再安装调试包启动模拟器特别慢未使用硬件加速或内存分配太小在AVD配置中开启硬件加速分配至少2G内存代码提示不出现项目还没完成Gradle同步等同步完成后点Sync Project刷新构建内存不足被杀掉Gradle运行内存不够在gradle.properties里调大org.gradle.jvmargs这张表值得你收藏一下。等哪天真碰上对应问题先来查表能省下去网上漫无目的地翻帖子的时间。我当年要是有这么一张表估计能少熬好几个通宵。4.4 一个容易被忽略的细节Gradle的JVM与内存配置很多人环境装好了项目也能跑了但跑大项目的时候构建特别慢甚至直接报OutOfMemoryError。问题通常不在SDK不在网络而在gradle.properties里没配好Gradle自身的内存。Gradle本身是一个运行在JVM上的程序默认给它分配的内存是有限制的一般是2G左右。现代项目动辄几十个模块、几百个依赖2G明显不够。我推荐你在项目根目录的gradle.properties里加上这几行配置org.gradle.jvmargs-Xmx4096m -XX:MaxMetaspaceSize1024m -Dfile.encodingUTF-8 org.gradle.paralleltrue org.gradle.cachingtrue org.gradle.daemontrue逐个解释一下。-Xmx4096m是给Gradle分配最大4G堆内存具体大小按你的电脑内存调整电脑内存够大可以给到6G甚至8GMaxMetaspaceSize控制的是类元数据的空间项目大的时候这里也容易爆paralleltrue开启模块并行构建多模块项目收益明显cachingtrue开启构建缓存东西只要编译过一次就不会重复编译daemontrue让Gradle进程常驻在后台不用每次构建都冷启动。这几项配完之后你会明显感受到构建速度不一样。除了Gradle的内存还有Android Studio自己的内存。在Studio的Help - Change Memory Settings里把IDE heap size调高一些至少2G代码扫描、索引的时候流畅度会好很多。但注意别把电脑内存全部塞给这些工具操作系统自己也得留一点余地否则电脑先卡死反而更慢。5. 给后续实战课准备的几个前置建议5.1 先想清楚做啥子嘛这个APP到底怎么做环境跑通之后后面文章会开始进入真正的开发环节。我先把项目的整体规划在这里铺垫一下这样你学习的时候心里有数。做啥子嘛其实是一个典型的决策助手类工具它的核心使用场景就是当你面对一堆选项却不知道该选什么的时候用它来强制做个决定。核心功能可以拆成这么几块第一块是随机决策功能用户输入几个选项比如火锅、烧烤、面条APP随机给你一个结果。实现不复杂核心就是集合和随机数用来学习列表操作和状态管理再合适不过。第二块是日常推荐功能预设一些场景化的小建议比如不知道去哪儿玩的时候给你推荐附近公园、咖啡馆、电影院这就涉及到数据组织和页面跳转。第三块是历史记录功能把你每次纠结出来的决定存到本地数据库里隔段时间回看还挺有意思这一块能自然引入数据存储的知识点。我选择这样一个项目来做整个系列的主线是因为它足够简单但又不至于简单到什么都学不到。每一步开发都能对应一个明确的知识点做完之后是真的能上架的完整产品不是那种只活在教程里的废物项目。后续的文章我会按照这个规划一步步写下去第一课环境只是拉开序幕。5.2 一个多年来的体会环境搭建的耐心是最值得的投资写到这里我想掏心窝子说几句。从大学第一次配开发环境被虐到怀疑人生到现在带着团队做项目我越来越觉得愿意花时间把环境弄明白这件事才是开发路上最值得的投资。工具链就像厨房里的锅碗瓢盆做饭的手艺再高锅都点不着火菜也上不了桌。我把自己的经验浓缩成三条建议送给打算跟着这个系列走完的朋友第一遇到环境问题别逞强善用报错信息。报错信息里每一个英文单词都是线索把完整报错复制下来去搜索比你自己盯着屏幕猜强一百倍。第二每个版本的更新公告都值得读一遍尤其是Gradle和AGP的版本发布说明版本适配的坑大多在公告里说得很明白。第三环境搭建的每一步操作都要知其所以然别只会点下一步。你用Android Studio点一下按钮能创建模拟器但如果你明白AVD背后其实就是一台带独立内核的虚拟机后面排查性能问题的时候思路就会清晰得多。后面的实战系列马上就会开始动手写代码了。下一课我们会正式创建做啥子嘛这个项目把它的第一个页面搭出来从主界面开始一点一点丰富功能。你只要把这一课的环境准备好到时候跟着敲就行。如果搭建过程中遇到了这篇文章没写到的问题也欢迎在评论区留个言我看到了会尽量回复。行这一课就到这儿下一课见。