SDK Platform Android — είναι μια συλλογή βιβλιοθηκών, εικόνων συστήματος και εργαλείων για μια συγκεκριμένη έκδοση του λειτουργικού συστήματος. Κάθε πλατφόρμα είναι συνδεδεμένη με το δικό της API Level και περιλαμβάνει android.jar με κλάσεις Android API, στοιχεία χρόνου εκτέλεσης και εξομοιωτή. Σύμφωνα με το Google Developer Documentation, 2026, οι προγραμματιστές χρησιμοποιούν το SDK Platform για τη μεταγλώττιση κώδικα έναντι της έκδοσης-στόχου του λειτουργικού συστήματος. Χωρίς εγκατεστημένη πλατφόρμα, δεν είναι δυνατή η δημιουργία APK ή η εκτέλεση της εφαρμογής στον εξομοιωτή. SDK Manager διαχειρίζεται τη λήψη, την ενημέρωση και τη διαγραφή αυτών των στοιχείων.
Κύρια σημεία
SDK Platform — είναι ένα θεμελιώδες στοιχείο του Android SDK, που αποτελεί ένα πλήρες σύνολο βιβλιοθηκών και εργαλείων για την ανάπτυξη εφαρμογών σε μια συγκεκριμένη έκδοση Android. Κάθε πλατφόρμα αναγνωρίζεται από το API Level — έναν ακέραιο αριθμό που αυξάνεται με την κυκλοφορία νέων εκδόσεων του λειτουργικού συστήματος. Για παράδειγμα, το Android 13 αντιστοιχεί στο API Level 33, το Android 14 — στο API Level 34, το Android 15 — στο API Level 35.
Σε αντίθεση με το Android Studio (IDE), το SDK Platform δεν περιέχει επεξεργαστή κώδικα ή εντοπιστή σφαλμάτων. Είναι ένα επίπεδο συστήματος που συνδέεται με τον μεταγλωττιστή και το εργαλείο δημιουργίας. Όταν ο προγραμματιστής γράφει import android.app.Activity, ο μεταγλωττιστής παίρνει αυτήν την κλάση από το android.jar ενός συγκεκριμένου SDK Platform. Χωρίς εγκατεστημένη πλατφόρμα με το απαιτούμενο API Level, ο κώδικας δεν θα μεταγλωττιστεί.
Η Google κυκλοφορεί ένα νέο SDK Platform για κάθε σταθερή έκδοση Android. Η ιστορία περιλαμβάνει περισσότερα από 35 API Level — από το Android 1.0 (API 1) έως το Android 15 (API 35). Κάθε πλατφόρμα είναι συμβατή προς τα πίσω: ο κώδικας που γράφτηκε για API Level 21 θα λειτουργεί σε API Level 35, αλλά όχι το αντίστροφο.
Το Android εξελίσσεται γρήγορα: κάθε έκδοση προσθέτει νέα API, αλλάζει τη συμπεριφορά των υπαρχόντων και εισάγει περιορισμούς. Για παράδειγμα, Android 10 (API 29) εισήγαγε το Scoped Storage, Android 12 (API 31) — SplashScreen API, Android 14 (API 34) — υποχρεωτικές σημαίες BroadcastReceiver. Ο προγραμματιστής πρέπει να δημιουργήσει την εφαρμογή έναντι της τρέχουσας πλατφόρμας για να χρησιμοποιήσει αυτές τις δυνατότητες.
Ταυτόχρονα, η εφαρμογή μπορεί να λειτουργεί σε παλιές εκδόσεις του λειτουργικού συστήματος. Για αυτό, στο Gradle καθορίζεται το minSdk — το ελάχιστο API Level στο οποίο εκτελείται η εφαρμογή. Ο κώδικας χρησιμοποιεί ελέγχους έκδοσης και υπό όρους κλήσεις API. Αυτή η προσέγγιση εξασφαλίζει συμβατότητα χωρίς απώλεια νέων λειτουργιών.
| Έκδοση Android | API Level | Κωδική ονομασία | Έτος κυκλοφορίας |
|---|---|---|---|
| Android 12 | 31 | Snow Cone | 2021 |
| Android 13 | 33 | Tiramisu | 2022 |
| Android 14 | 34 | Upside Down Cake | 2023 |
| Android 15 | 35 | Vanilla Ice Cream | 2024 |
Το SDK Platform — δεν είναι ένα μόνο αρχείο, αλλά ένα σύνολο στοιχείων που μαζί εξασφαλίζουν τη μεταγλώττιση, τη δημιουργία και τη δοκιμή της εφαρμογής. Το κύριο στοιχείο είναι το android.jar — ένα αρχείο με κλάσεις Android API που περιλαμβάνονται σε αυτήν την έκδοση. Αυτό το αρχείο συνδέεται με τον μεταγλωττιστή Kotlin ή Java και καθορίζει ποιες κλάσεις, μέθοδοι και σχολιασμοί είναι διαθέσιμοι στον προγραμματιστή.
Κάθε SDK Platform περιλαμβάνει System Image — μια εικόνα του λειτουργικού συστήματος για τον εξομοιωτή Android Virtual Device. Χωρίς την αντίστοιχη εικόνα, ο εξομοιωτής δεν θα μπορεί να εκκινήσει μια εικονική συσκευή με το απαιτούμενο API Level. Οι System Images είναι διαφόρων τύπων: Google APIs (με υπηρεσίες Google), Google Play (με Play Store) και AOSP (καθαρό Android χωρίς υπηρεσίες Google).
Το SDK Platform περιλαμβάνει μια έκδοση Build-Tools και Platform-Tools βελτιστοποιημένη για αυτό το API Level. Τα Build-Tools περιέχουν aapt2 (Android Asset Packaging Tool), dx/d8 (μεταγλωττιστής Dalvik/ART) και ApkSigner. Τα Platform-Tools παρέχουν ADB (Android Debug Bridge), fastboot και SQLite. Αυτά τα εργαλεία ενημερώνονται ανεξάρτητα από το SDK Platform μέσω του SDK Manager.
Κάθε πλατφόρμα περιλαμβάνει τυπικούς πόρους Android — θέματα συστήματος, στυλ, κινούμενα σχέδια, χρώματα και μεγέθη. Αυτοί οι πόροι χρησιμοποιούνται κατά τη μεταγλώττιση: εάν ο προγραμματιστής αναφέρεται στο @android:style/Theme.Material.Light, το εργαλείο δημιουργίας παίρνει τον ορισμό από τους πόρους του SDK Platform. Αυτό εγγυάται ομοιόμορφη εμφάνιση των στοιχείων συστήματος σε όλες τις συσκευές.
| Στοιχείο | Περιγραφή | Μέγεθος (περίπου) |
|---|---|---|
| android.jar | Βιβλιοθήκες Android API για μεταγλώττιση | 50–120 MB |
| System Image | Εικόνα ΛΣ για εξομοιωτή | 600–1500 MB |
| Build-Tools | Εργαλεία δημιουργίας APK και AAB | 200–400 MB |
| Platform Resources | Πόροι συστήματος (θέματα, στυλ) | 30–80 MB |
| Skins | Προφίλ συσκευών για εξομοιωτή | 10–50 MB |
API Level — είναι ένα ακέραιο αναγνωριστικό της έκδοσης Android SDK. Κάθε έκδοση Android αντιστοιχεί σε ένα API Level που αυξάνεται μονότονα. Ο προγραμματιστής καθορίζει το API Level σε τρεις βασικές παραμέτρους του build.gradle: compileSdk, minSdk και targetSdk. Η επιλογή αυτών των παραμέτρων καθορίζει ποια API είναι διαθέσιμα και πώς το σύστημα επεξεργάζεται την εφαρμογή.
Η Google συνιστά τη διατήρηση του minSdk σε επίπεδο όχι χαμηλότερο από το τρέχον όριο διανομής — σύμφωνα με το Android Studio Distribution Dashboard (2026), περίπου το 95% των συσκευών λειτουργούν σε Android 8.0 (API 26) και νεότερο. Το compileSdk πρέπει να είναι το τελευταίο σταθερό — αυτό παρέχει πρόσβαση σε νέα API και επιτρέπει στους ελέγχους lint να ανιχνεύουν παρωχημένες μεθόδους.
Με κάθε νέο API Level, η Google εισάγει σημαντικές αλλαγές. Το Android 6.0 (API 23) πρόσθεσε δικαιώματα χρόνου εκτέλεσης — η εφαρμογή ζητά δικαιώματα κατά τη λειτουργία, όχι κατά την εγκατάσταση. Το Android 8.0 (API 26) εισήγαγε την αυτόματη συμπλήρωση φορμών και κανάλια ειδοποιήσεων. Android 12 (API 31) άλλαξε ριζικά την προσέγγιση στα intents — εμφανίστηκε το SplashScreen API και η εξαγωγή στοιχείων μέσω του χαρακτηριστικού exported. Το Android 14 (API 34) κατέστησε υποχρεωτικό τον καθορισμό σημαιών για το BroadcastReceiver και εισήγαγε αυστηρούς περιορισμούς στις foreground services.
Η κατανόηση της ιστορίας του API Level βοηθά τον προγραμματιστή να επιλέξει τη σωστή στρατηγική συμβατότητας. Εάν η εφαρμογή χρησιμοποιεί compileSdk 35 αλλά minSdk 26, ο κώδικας μπορεί να καλέσει μεθόδους του API 35 μόνο μετά από έλεγχο έκδοσης μέσω του Build.VERSION.SDK_INT. Αυτή η προσέγγιση ονομάζεται version-gated development και αποτελεί το πρότυπο της βιομηχανίας.
| Android | API | Έτος | Βασική καινοτομία |
|---|---|---|---|
| 6.0 Marshmallow | 23 | 2015 | Δικαιώματα χρόνου εκτέλεσης |
| 8.0 Oreo | 26 | 2017 | Κανάλια ειδοποιήσεων, Autofill |
| 10 | 29 | 2019 | Scoped Storage, Dark Theme |
| 12 | 31 | 2021 | SplashScreen, χαρακτηριστικό exported |
| 14 | 34 | 2023 | Σημαίες Broadcast, Foreground Services |
SDK Manager — είναι ένα εργαλείο για τη διαχείριση στοιχείων Android SDK: εγκατάσταση νέων SDK Platform, ενημέρωση υπαρχόντων και διαγραφή παρωχημένων. Το SDK Manager είναι διαθέσιμο τόσο ως γραφική διεπαφή στο Android Studio, όσο και ως γραμμή εντολών μέσω του sdkmanager. Μέσω της γραμμής εντολών, το SDK Manager είναι βολικό για χρήση σε CI/CD pipelines όπου δεν υπάρχει γραφική διεπαφή.
Το SDK Manager εγκαθιστά πλατφόρμες στον κατάλογο Android SDK, ο οποίος από προεπιλογή βρίσκεται στο $HOME/Android/Sdk σε Linux και macOS ή στο %LOCALAPPDATA%\Android\Sdk σε Windows. Μέσα στον κατάλογο platforms υπάρχουν φάκελοι της μορφής android-{API Level}, καθένας από τους οποίους περιέχει ένα πλήρες SDK Platform.
Η εντολή sdkmanager δέχεται ένα αναγνωριστικό πακέτου στη μορφή "platforms;android-{API}". Για παράδειγμα, για εγκατάσταση του SDK Platform 35, η εντολή είναι η εξής:
# Εγκατάσταση SDK Platform για API Level 35
sdkmanager "platforms;android-35"
# Εγκατάσταση πολλών πλατφορμών με μία εντολή
sdkmanager "platforms;android-34" "platforms;android-33" "platforms;android-31"
# Λίστα εγκατεστημένων πλατφορμών
sdkmanager --list_installed | grep platforms
# Διαγραφή παρωχημένης πλατφόρμας
sdkmanager --uninstall "platforms;android-28"
Τα σύγχρονα έργα Android χρησιμοποιούν το Gradle Plugin, το οποίο μπορεί να εγκαταστήσει αυτόματα το SDK Platform κατά την πρώτη δημιουργία. Για αυτό, πρέπει να καθορίσετε το compileSdk στο build.gradle και να προσθέσετε τον κατάλογο SDK στην τοπική διαμόρφωση. Το Android Studio προσφέρει επίσης εγκατάσταση της πλατφόρμας που λείπει κατά το άνοιγμα ενός έργου — απλώς πατήστε το κουμπί "Install SDK Platform" στο παράθυρο συγχρονισμού Gradle.
Είναι σημαντικό να ενημερώνετε τακτικά το SDK Platform μέσω του SDK Manager — μαζί με την πλατφόρμα ενημερώνονται τα Build-Tools και Platform-Tools, επηρεάζοντας την απόδοση δημιουργίας και τη σταθερότητα εντοπισμού σφαλμάτων. Η Google συνιστά τον έλεγχο ενημερώσεων SDK κάθε 2-3 εβδομάδες, ειδικά πριν από τη δημοσίευση μιας νέας έκδοσης εφαρμογής στο Google Play.
Για την εκκίνηση του εξομοιωτή με συγκεκριμένο API Level, πρέπει να εγκαταστήσετε το System Image της ίδιας έκδοσης. Το SDK Manager επιτρέπει τη λήψη εικόνων διαφόρων αρχιτεκτονικών (x86_64, arm64-v8a) και τύπων (Google APIs, Google Play, AOSP). Μετά τη λήψη της εικόνας, το AVD Manager δημιουργεί μια εικονική συσκευή βάσει αυτής.
# Εγκατάσταση System Image με Google APIs για API 35
sdkmanager "system-images;android-35;google_apis;x86_64"
# Δημιουργία AVD μέσω γραμμής εντολών
avdmanager create avd -n pixel8 -k "system-images;android-35;google_apis;x86_64"
# Λίστα δημιουργημένων AVD
avdmanager list avd
Τρεις παράμετροι στο build.gradle καθορίζουν τη λειτουργία της εφαρμογής με το SDK Platform. compileSdk — το API Level που χρησιμοποιείται για μεταγλώττιση. Αυτή η παράμετρος καθορίζει ποιες κλάσεις Android API είναι διαθέσιμες στον κώδικα. Το compileSdk πρέπει να είναι το νεότερο και από τα τρία και δεν επηρεάζει τη συμπεριφορά χρόνου εκτέλεσης — η εφαρμογή μεταγλωττίζεται αλλά χρησιμοποιεί μόνο τα API που υπάρχουν στη συσκευή.
minSdk — το ελάχιστο API Level στο οποίο μπορεί να εγκατασταθεί η εφαρμογή. Το Google Play δεν θα επιτρέψει την εγκατάσταση της εφαρμογής σε συσκευή με έκδοση χαμηλότερη από το minSdk. Αυτή η παράμετρος καθορίζει το όριο συμβατότητας και επηρεάζει την κάλυψη κοινού. Όσο χαμηλότερο είναι το minSdk, τόσο περισσότερες συσκευές υποστηρίζονται, αλλά τόσο λιγότερα νέα API μπορούν να χρησιμοποιηθούν χωρίς ελέγχους.
targetSdk — το API Level στο οποίο η εφαρμογή έχει δοκιμαστεί. Το σύστημα Android χρησιμοποιεί το targetSdk για την εφαρμογή αλλαγών συμπεριφοράς: εάν η εφαρμογή δεν έχει ενημερωθεί στο νέο API Level, το σύστημα ενεργοποιεί τη λειτουργία συμβατότητας για παλαιότερες εκδόσεις. Το Google Play απαιτεί το targetSdk να μην είναι χαμηλότερο από ένα συγκεκριμένο επίπεδο — για το 2026 αυτό είναι API 34 (Android 14).
android {
compileSdk 35
defaultConfig {
applicationId "com.example.app"
minSdk 26
targetSdk 35
versionCode 1
versionName "1.0"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
}
// Η έκδοση Android SDK πρέπει να εγκατασταθεί μέσω του SDK Manager
// sdkmanager "platforms;android-35"
Η στρατηγική επιλογής εξαρτάται από τους στόχους του έργου. Για νέα εφαρμογή: compileSdk — το τελευταίο σταθερό (35 στις αρχές του 2026), minSdk — API 26 (Android 8.0, καλύπτει το 95% των συσκευών), targetSdk — το τελευταίο σταθερό. Για ενημέρωση υπάρχουσας εφαρμογής: αυξήστε το compileSdk αμέσως, το targetSdk — μετά τη δοκιμή όλων των αλλαγών συμπεριφοράς, το minSdk — μόνο εάν είναι απαραίτητο να εγκαταλείψετε παλιές συσκευές.
Η Google απαιτεί το targetSdk να ενημερώνεται εντός ενός έτους από την κυκλοφορία μιας νέας έκδοσης Android. Οι εφαρμογές που δεν πληρούν αυτήν την απαίτηση δεν μπορούν να δημοσιεύουν ενημερώσεις στο Google Play. Για την παρακολούθηση προθεσμιών, χρησιμοποιήστε το επίσημο ημερολόγιο ενημερώσεων Android OS.
| Παράμετρος | Σκοπός | Σύσταση |
|---|---|---|
| compileSdk | Έκδοση API για μεταγλώττιση | Τελευταία σταθερή |
| minSdk | Ελάχιστη υποστηριζόμενη έκδοση | API 26 για κάλυψη 95% |
| targetSdk | Έκδοση για αλλαγές συμπεριφοράς | Τελευταία σταθερή + δοκιμή |
Κατά την ανάπτυξη για διαφορετικές εκδόσεις Android, πρέπει να λαμβάνεται υπόψη η διαθεσιμότητα API. Εάν η εφαρμογή χρησιμοποιεί compileSdk 35 αλλά εκτελείται σε συσκευή με API 31, η κλήση μεθόδων που προστέθηκαν στο API 34 θα οδηγήσει σε NoSuchMethodError ή AbstractMethodError. Για ασφαλή κλήση νέων API, χρησιμοποιούνται έλεγχοι έκδοσης μέσω του Build.VERSION.SDK_INT.
class FeatureChecker {
fun registerNotificationChannel(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// Τα Notification channels είναι διαθέσιμα από API 26
val channel = NotificationChannel(
"updates",
"Ενημερώσεις",
NotificationManager.IMPORTANCE_DEFAULT
)
val manager = context.getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
}
}
Για μεθόδους που καλούνται μόνο σε συγκεκριμένες εκδόσεις, χρησιμοποιήστε τον σχολιασμό @RequiresApi. Αυτό ενημερώνει τους ελέγχους lint ότι η μέθοδος είναι ασφαλής και απενεργοποιεί τις προειδοποιήσεις. Σε συνδυασμό με τον έλεγχο SDK_INT, ο σχολιασμός κάνει τον κώδικα πιο καθαρό και πιο κατανοητό για τους αξιολογητές.
@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
fun scheduleExactAlarm(manager: AlarmManager, time: Long) {
// API 34: scheduleExact με σημαία SCHEDULE_EXACT_ALARM
if (manager.canScheduleExactAlarms()) {
manager.setExact(AlarmManager.RTC_WAKEUP, time, pendingIntent)
} else {
// Αίτηση άδειας SCHEDULE_EXACT_ALARM
val intent = Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM)
context.startActivity(intent)
}
}
fun safeScheduleAlarm(context: Context, triggerTime: Long) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
scheduleExactAlarm(getAlarmManager(context), triggerTime)
} else {
// Παλιά μέθοδος setExact χωρίς έλεγχο άδειας
getAlarmManager(context).setExact(AlarmManager.RTC_WAKEUP, triggerTime, pendingIntent)
}
}
Μερικές φορές χρειάζεται να μάθετε ποια έκδοση του SDK Platform είναι εγκατεστημένη στη συσκευή του προγραμματιστή ή στο CI. Αυτό μπορεί να γίνει μέσω ADB ή προγραμματιστικά στον κώδικα της εφαρμογής. Η γνώση του API Level της συσκευής βοηθά στη δοκιμή συμπεριφοράς που εξαρτάται από την έκδοση.
fun logDeviceInfo() {
with (Build.VERSION) {
Log.d("SDK_Demo", "SDK_INT: $SDK_INT")
Log.d("SDK_Demo", "RELEASE: $RELEASE")
Log.d("SDK_Demo", "CODENAME: $CODENAME")
Log.d("SDK_Demo", "PREVIEW_SDK_INT: $PREVIEW_SDK_INT")
}
// Έξοδος: SDK_INT: 35, RELEASE: 15, CODENAME: REL
}
Συχνές Ερωτήσεις
Το Android Studio είναι ένα IDE, ενώ το SDK Platform είναι μια συλλογή βιβλιοθηκών και εργαλείων για μεταγλώττιση. Το Studio χρησιμοποιεί το SDK Platform για τη δημιουργία εφαρμογών, αλλά οι πλατφόρμες λαμβάνονται ξεχωριστά μέσω του SDK Manager και μπορούν να ενημερωθούν ανεξάρτητα από την έκδοση του Studio.
Συνήθως αρκούν τρεις εκδόσεις: η πιο πρόσφατη (compileSdk), η ελάχιστη (minSdk) και μία ενδιάμεση για δοκιμή. Το SDK Manager επιτρέπει την εύκολη προσθήκη και αφαίρεση πλατφορμών ανάλογα με τις ανάγκες. Οι προγραμματιστές διατηρούν κατά μέσο όρο 3-5 πλατφόρμες στον υπολογιστή εργασίας τους.
Όχι. Κάθε SDK Platform περιέχει μόνο τα API της δικής του έκδοσης. Για κλήση μεθόδων από το API 35 απαιτείται η πλατφόρμα android-35. Ο καθορισμός νέου compileSdk με εγκατεστημένη παλιά πλατφόρμα θα προκαλέσει σφάλμα μεταγλώττισης.
Η Google κυκλοφορεί ενημερώσεις SDK Platform για κάθε έκδοση: διορθώσεις σφαλμάτων, νέα API, βελτιώσεις απόδοσης. Το SDK Manager ειδοποιεί για διαθέσιμες ενημερώσεις. Συνιστάται η εγκατάσταση της τελευταίας αναθεώρησης της πλατφόρμας για σταθερή δημιουργία.
Από προεπιλογή, κάθε SDK Platform καταλαμβάνει 200-800 MB στον κατάλογο Android/Sdk/platforms/android-{API}. Μέσα στο φάκελο βρίσκονται το android.jar, ο φάκελος data με πόρους και αρχεία διαμόρφωσης για τον εξομοιωτή και τη δημιουργία.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης