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、运行设备。三层都稳了,后面写代码才能安心。

SDK接入改造 - 环境准备知识体系 环境准备三层结构 第1层:基础工具 JDK (11/17) Gradle Wrapper ADB 工具 第2层:集成开发环境 Android Studio IntelliJ IDEA VS Code (轻量) 第3层:运行与调试设备 模拟器 (AVD) 真机 (USB/WiFi) 云真机 (远程) 注意:每一层都依赖下一层的稳定性。比如 IDE 依赖 JDK 和 Gradle,真机调试依赖 ADB。

4.5 最后一点碎碎念

环境准备这件事,说难也难,说简单也简单。核心就是别怕折腾。我刚开始搞 SDK 改造那会儿,光配置一个 Gradle 代理就花了一下午。但后来发现,把这些“黑盒”弄明白了,后面出问题的时候你才有的放矢。

你记住一个原则:能复现的问题,都不是大问题。环境准备的目的,就是保证你的“复现条件”是最纯的。

最后一道防线:如果你配置完了,项目还是跑不起来。别怀疑人生。先去 File -> Project Structure -> SDK Location 看一眼 JDK 路径对不对。再去 File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle 看一眼 Gradle JDK 和 Gradle 版本。这两个地方,是环境问题的重灾区。我曾经在这两个选项上浪费了两个小时,结果只是把 JDK 路径写错了。