4. 环境准备:开发工具、IDE、模拟器/真机
说实话,SDK 接入改造这件事,开头最磨人的往往不是代码,而是环境。工具链没搭好,后面每一步都像踩在棉花上,出了问题你都不知道该怪谁。我个人习惯,换一台新电脑或者开始一个新项目,第一件事就是把这套环境捋顺。磨刀不误砍柴工,咱们今天就把刀磨利索。
核心原则:环境的一致性比版本高低更重要。团队里所有人的环境(IDE版本、JDK版本、构建工具版本)尽量对齐,能省掉 90% 的“哎,我机器上能跑啊?”这种扯皮事儿。
4.1 开发工具:地基里的钢筋水泥
这里说的不是 IDE,而是那些藏在后台、驱动整个开发流程的基础工具。它们是环境准备的“第一顺位”。
4.1.1 JDK (Java Development Kit)
如果你是 Android 开发,JDK 是跑不掉的。SDK 本身可能用 Java 或 Kotlin 写,但依赖的 Gradle、AAPT 等工具都需要 JDK 环境。
- 版本选择:我个人建议,新项目直接上 JDK 17。老项目如果是 Android Gradle Plugin (AGP) 7.x 以下的,可能需要 JDK 11。我见过有人用 JDK 8 编译新版本 AGP,那报错简直是灾难。
- 安装验证:打开终端,输入
java -version和javac -version。确保输出里没有乱七八糟的乱码,版本号也对得上。 - 环境变量 (JAVA_HOME):很多 IDE 和构建工具是直接读这个变量的。
echo $JAVA_HOME看看是不是空的。如果是,请去配好。你想想看,如果这里没配,Gradle 会一脸懵逼地找不到 JDK。
我的小习惯:我电脑上会装两三个版本的 JDK(比如 JDK 8、11、17),然后用类似 jEnv 这样的版本管理工具来切换。项目根目录下的 .java-version 文件自动帮我对接,特别省心。不过这不是必须的,初学阶段装一个最新的稳定版就够了。
4.1.2 构建工具 (Build Tools)
Gradle
Android 世界的构建标配。SDK 的接入和编译,基本都靠它。
- Gradle Wrapper:这是官方推荐的方式。每个项目自带一份
gradlew脚本和gradle-wrapper.properties文件。好处是每个人用的 Gradle 版本完全一致,谁也别想私自升级。我第一次接手一个老项目,发现大家用五个不同 Gradle 版本编译,那种酸爽……后来我强制团队统一用 Wrapper,天下太平。 - Gradle 镜像加速:在国内的同学,记得去
gradle-wrapper.properties里把distributionUrl换成腾讯云或阿里的镜像。不然第一次下载 Gradle 会等到你怀疑人生。
4.2 集成开发环境 (IDE):你的主战场
工具再好,也得上场打仗。IDE 就是你的战壕和枪械。
4.2.1 Android Studio (AS)
做 SDK 接入改造,Android Studio 当仁不让是首选。原因很简单——它是 Google 亲儿子,对 Android 项目各种配置(Manifest、Resource、ProGuard)支持最好。
- 版本选择:用最新的稳定版就好,别追 Canary(金丝雀版)。我之前有一次用 Canary 版,结果 Gradle 插件有 bug,项目直接疯了,折腾了一天。
- 必备插件:
- ADB Wi-Fi:调试平板或者机顶盒的时候,不用插 USB 线,省不少事。
- Material Design Icon Generator:快速生成不同分辨率的图标,虽然接入 SDK 可能用不上,但做 Demo App 很实用。
- SonarLint:在你写代码的时候就帮你揪出代码异味,对改造 SDK 来说,保持干净代码很有帮助。
踩坑警告:我遇到过的情况是,从公司的 Git 仓库 clone 下来一个项目,AS 里各种爆红。别慌。先检查 JDK 版本对不对,再看 Gradle 版本和插件版本是否匹配。百分之九十的问题都是这两样。下一步是 File -> Invalidate Caches and Restart ...,清掉缓存重新索引一下,世界瞬间清净了。
4.2.2 IntelliJ IDEA
如果你的 SDK 是个纯 Java/Kotlin 库(没有 Android 资源),IntelliJ IDEA 的 Community 版完全够用,而且启动快、不卡。我一般自己做纯库开发的时候,更倾向于用 IDEA 而不是 AS,因为它更轻量。
4.2.3 VSCode
轻量级选手。用 VSCode 配合 Kotlin、Java Extension Pack 等插件也能干活。但对于复杂的 Android 工程构建和资源管理,还是不如 AS 方便。我个人只拿它来快速查看代码片段或写 Markdown 文档。
4.3 模拟器与真机:SDK 的试金石
环境搭好了,IDE 也装完了,总得有个地方跑跑看。坦白讲,这块儿坑也不少。
4.3.1 模拟器 (Emulator)
Android 自带的 AVD(Android Virtual Device)依然是首选。
| 特性 | 模拟器 | 真机 |
|---|---|---|
| 启动速度 | 慢(尤其Cold Boot) | 快(开机就行) |
| 性能 | 依赖电脑硬件(内存、CPU) | 硬件真实性能 |
| 传感器 | 支持有限(NFC、陀螺仪等需配置) | 全部支持 |
| 调试便利性 | 截图、录屏、模拟来电等开箱即用 | 需 USB 连接,偶尔掉线 |
| SDK兼容性测试 | 适合 API 级别快速测试 | 适合多品牌、多屏幕适配 |
我个人给模拟器的几点建议:
- 启用 Intel HAXM / Windows Hyper-V:这是模拟器快慢的关键。没有硬件加速的模拟器,慢得像蜗牛。去 BIOS 里把 Intel Virtualization Technology (VT-x) 打开。
- 选择带 Google Play 的镜像:这样你才能从模拟器里直接下载 Google 地图、Google Play Service 等,有些 SDK 是依赖这些服务的。
- 创建多台模拟器:我一般会保留几台常用配置:一台 Pixel 3 + API 30(中端主流)、一台 Pixel 6 Pro + API 33(高端主流)、一台平板(API 30)。随时能拿出来测。
4.3.2 真机调试
模拟器跑得再好,真机才是最终战场。真机调试时,有些小细节容易忽略。
- USB 调试开关:去
设置 -> 关于手机 -> 版本号里连续点击7次,开启开发者模式。然后回来打开USB 调试。别忘了,有些厂商的设备(比如小米、OV)默认会限制高版本的 USB 调试协议,需要登录账户或打开“安全设置”选项。 - USB 连接不稳定:有时候 `adb devices` 看到设备但显示 `unauthorized` 或 `offline`。换个 USB 口或者换一根数据线。有些充电线是不带数据传输功能的。我现在包里常备一根原装数据线。
- Wi-Fi 调试:Android 11+ 原生支持无线调试。配好
adb pair之后,就不用一直插着线了。特别适合长时间跑 UI 自动化测试。 - 多屏适配:我经历过最惨的一次事故,是 SDK 在华为平板上直接崩溃,因为某个布局依赖了
DisplayMetrics里的某个值,而平板的 DPI 和手机完全不一样。所以真机测试时,一定要照顾到不同屏幕尺寸和分辨率的设备。
速查清单:如果你手里没有多种品牌真机,可以考虑用云真机(如腾讯云、阿里云的测试服务)或 Firebase Test Lab。尤其是需要测试不同厂商系统对 SDK 权限拦截行为时,云真机的性价比很高。
4.4 本章知识体系总览
说了这么多,你可能觉得有点分散。我把它画成一张图,你看完就清楚了。环境准备就这三个层级:底层工具、IDE、运行设备。三层都稳了,后面写代码才能安心。
4.5 最后一点碎碎念
环境准备这件事,说难也难,说简单也简单。核心就是别怕折腾。我刚开始搞 SDK 改造那会儿,光配置一个 Gradle 代理就花了一下午。但后来发现,把这些“黑盒”弄明白了,后面出问题的时候你才有的放矢。
你记住一个原则:能复现的问题,都不是大问题。环境准备的目的,就是保证你的“复现条件”是最纯的。
最后一道防线:如果你配置完了,项目还是跑不起来。别怀疑人生。先去 File -> Project Structure -> SDK Location 看一眼 JDK 路径对不对。再去 File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle 看一眼 Gradle JDK 和 Gradle 版本。这两个地方,是环境问题的重灾区。我曾经在这两个选项上浪费了两个小时,结果只是把 JDK 路径写错了。