在 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}
}