在 Android 开发中,compileSdkVersion
和 targetSdkVersion
是 build.gradle
文件中的两个关键配置,它们分别控制应用的编译行为和运行时兼容性。以下是它们的详细区别和用途:
1. compileSdkVersion
(编译版本)
-
作用:指定用于编译应用的 Android SDK 版本。
-
影响范围:
-
决定你在代码中能调用哪些 API(例如 Android 14 的新特性需要
compileSdkVersion 34
)。 -
仅影响编译时的代码检查,不影响应用在设备上的实际运行行为。
-
-
建议:始终使用最新的稳定版 SDK(如 Android 14 对应
34
),以支持新 API 和优化编译。
gradle
复制
android {compileSdkVersion 34 // 使用 Android 14(API 34)编译 }
2. targetSdkVersion
(目标版本)
-
作用:声明应用针对哪个 Android 版本进行优化。
-
影响范围:
-
控制应用的运行时行为。例如:
-
权限模型(如 Android 6.0+ 的动态权限)。
-
后台限制(如 Android 8.0+ 的后台服务限制)。
-
存储访问(如 Android 11+ 的分区存储)。
-
-
如果
targetSdkVersion
低于设备系统版本,Android 会启用兼容模式(可能影响功能或性能)。
-
-
建议:
-
更新前需充分测试,确保兼容性。
-
通常应逐步升级到最新版本(但不超过
compileSdkVersion
)。
-
gradle
复制
android {defaultConfig {targetSdkVersion 34 // 针对 Android 14 优化} }
核心区别总结
配置项 | 作用阶段 | 影响运行时? | 推荐设置 |
---|---|---|---|
compileSdkVersion | 编译时 | ❌ 否 | 最新稳定版(如 34 ) |
targetSdkVersion | 运行时 | ✅ 是 | 逐步升级,充分测试后更新 |
注意事项
-
版本关系:
-
compileSdkVersion
≥targetSdkVersion
≥minSdkVersion
(最低支持版本)。
-
-
常见问题:
-
如果
targetSdkVersion
过低,应用在新系统上可能无法使用新特性,或触发兼容性警告(如 Google Play 要求至少targetSdkVersion 33
以上)。 -
如果
compileSdkVersion
过低,无法调用新 API(编译报错)。
-
示例配置(Android Studio 新项目)
gradle
android {compileSdkVersion 34defaultConfig {minSdkVersion 21 // 最低支持 Android 5.0targetSdkVersion 34} }