3. 开发环境准备
说实话,很多入门动态交付的同学,第一步就栽在了环境配置上。我自己带过几个项目,一半的问题都是开发环境没对齐——不是你用的Gradle版本太老,就是我缺了某个SDK组件。今天咱们就把这一摊事捋清楚,后面写代码才不闹心。
Android Studio配置
我建议直接用最新稳定版的Android Studio。目前2025年的话,至少是Koala(2024.1.1)以上版本。别问我为什么不用预览版,预览版容易遇到插件兼容坑,我在一次内部测试中吃过亏——刚装好就报“无法读取模块元数据”,折腾半天才发现是Gradle JVM不匹配。
安装之后,打开SDK Manager(小图标是个SDK箱子)。你需要确认这几项:
- Android SDK Platform:至少装到API 24以上,建议30~34全装,老项目可能用到旧版本。
- Android SDK Build-Tools:建议保留33.0.1和34.0.0两个版本,动态交付打包时需要特定版本的工具链。
- NDK (Side by side):如果你要玩原生库,记得装;纯Java/Kotlin项目可以跳过。
最低SDK要求
SplitInstall动态交付说白了要靠Google Play Core库,而这个库对minSdk有硬性要求。我整理了一个表,你对着看:
| 特性 | 最低minSdk版本 | 推荐minSdk版本 | 说明 |
|---|---|---|---|
| 基本SplitInstall | 21 | 24 | Play Core 2.0+要求至少API 21 |
| 按需下载(ondemand) | 21 | 26 | 低版本可能缺少部分下载回调 |
| Deferred安装 | 21 | 28 | 后台静默安装需要更高级别API |
| 条件分发(country/API) | 21 | 24 | 仅与Play商店版本有关,与minSdk无关 |
看到没?核心功能其实21就够了,但我个人建议至少踩到24。为什么?因为Android 7.0(API 24)修复了大量分包安装的底层bug。我去年重构一个老项目,minSdk从19升到24后,动态交付的崩溃率直接降了90%。
Gradle插件版本选择
动态交付和Android Gradle Plugin(AGP)的版本绑定非常紧。我给新项目做脚手架时,每次都先去查这张对应表:
| AGP版本 | Gradle最低版本 | Gradle推荐版本 | 支持的动态交付特性 |
|---|---|---|---|
| 7.4.x | 7.5 | 8.0 | 基本SplitInstall + Deferred |
| 8.0.x | 8.0 | 8.2 | 全部特性(含按条件分发) |
| 8.1.x | 8.0 | 8.3 | 全部特性 + 本地测试支持 |
| 8.2.x(当前最新稳定) | 8.1 | 8.4 | 全部特性 + 增量式交付优化 |
你想想看,AGP 7.4和8.0之间就差了一个大版本,但动态交付的体验差很多——8.0开始才能用bundletool做本地模拟测试,这个太重要了。我建议你直接上AGP 8.1+,除非项目还被老旧的第三方库绑着。
具体的gradle-wrapper.properties配置:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
根目录build.gradle里声明AGP:
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.1.2'
}
}
注意了,别直接在dependencies里写+通配符,我见过有人用8.1.+,结果某天CI突然拉到了8.2的alpha版本,编译炸了半小时。老老实实写死版本号。
整个配置流程,一张图说清楚
这张图把配置流程串起来了。你从Android Studio出发,先搞定SDK Manager,再决定minSdk,最后把Gradle版本对好,就可以了。我自己每次搭建新项目都走这个流程,很少遇到环境问题。
最后说两句实战的
开新项目时,我一般这么干:先创建一个空的Android项目,把minSdk设成24,AGP用8.1.2,然后再加上Play Core库的依赖——这些后面章节会细讲。这个时候别急着写业务代码,先跑一次./gradlew build,确保整个环境是绿的。如果编译有警告,也别忽略,它们常常是未来坑的预告。
嗯,环境准备就这么简单。把这几块搞定,后面写动态交付的代码,你才能跑得顺。如果按我说的配完了还报错,多半是SDK版本和AGP版本对不上——去查一下官方的兼容性矩阵,基本都能解决。